反射机制?

其实我们平时写代码很少用到反射,但是在一些主流框架中反射技术应用是非常广泛的,所以学好反射还是非常有必要的。

那反射到底是什么呢?

反射是在程序运行时才知道要操作的是什么类,可以得到完整的类信息并且使用,这种动态获取对象信息和调用对象方法的功能称之为反射机制。我们平时用一个类的时候,一般都是直接New出来使用。而反射是获取类的字节码文件,也就是.class文件,最后通过newInstance()方法并强转来获取对象,但是需要目标类有默认无参构造函数,不然会抛出异常。在类没有默认无参构造函数,或者需要某个具体的构造函数来实例化的时候,通过Constructor类的newInstance()来完成

反射的三种方式:

1. Class.forName("包名");

2. 对象类型.class; //比如Class clazz = Person.class;

3. 对象引用.getClass();

例如:

Person p = new Person(); 

Class clazz = p.getClass();  

那我们一般使用哪种方式呢,先排除第三种,反射本来就是想要获取对象,此方法必须先有对象,有种“脱了裤子放屁”的感觉。第二种需要导入类的包,依赖性太强,推荐使用第一种方式。

反射常用的API有获取类的构造方法、方法以及属性,这里就不一一列举了。

你可能感兴趣的:(反射机制?)