android 反射调用带参数构造方法,Android 反射机制的理解

之前在网上找有关反射机制的资料发现网上关于这块的资料不多,而且不太容易懂,所以试着写一篇我自己所理解的反射机制希望能多你有所帮助.

首先来看看用反射机制和用以前的方法新建对象实例有什么不同

第一步新建一个Person对象

用以前的方法是:

Person p = new Person();

在内存中新建一个Person的实例,对象p对这块内存地址进行引用

用反射机制实现 (有三种方法):

第一种:

Class> cls=Class.forName("com.fanshe.Person"); //forName(包名.类名)

Person p=(Person)cls.newInstance();

1.通过JVM查找并加载指定的类(上面的代码指定加载了com.fanshe包中的Person类)

2.调用newInstance()方法让加载完的类在内存中创建对应的实例,并把实例赋值给p

第二种:

Person p = new Person();

Class> cls=p.getClass();

Person p2=(Person)cls.newInstance();

1.在内存中新建一个Person的实例,对象p对这个内存地址进行引用

2.对象p调用getClass()返回对象p所对应的Class对象

3.调用newInstance()方法让Class对象在内存中创建对应的实例,并且让p2引用实例的内存地址

第三种:

Class> cls=Person.Class();

Person p=(Person)cls.newInstance();

1.获取指定类型的Class对象,这里是Person

你可能感兴趣的:(android,反射调用带参数构造方法)