Java反射面试题
概念
在运行状态中,对于任意一个类,都能知道这个类的所有的属性和方法;并且对于任意一个对象,都能调用它的任意一个方法;
应用场景
- 逆向代码 ,例如反编译
- 与注解相结合的框架 例如Spring
- 动态生成类框架 例如Gson
反射API
Class类:可以获取类的属性,方法等信息
Field类:可以用来获取和设置类中的属性值
Method类:表示类的方法,可以用来获取类中的方法信息或者执行方法
Constructor:表示类的构造方法
获取Class对象的3种方法
Person p = new Person()
p.getClass()
Person.class
Class.forName(“类的全路径”)
创建对象的两种方法
Class对象的newInstance()
- 该方法要求该Class对象对应的类有默认的空构造器
调用Constructor对象的newInstance()
先使用Class对象获取指定的Constructor对象,在调用对象的newInstance()方法来创建Class对象对应类的实例,通过这种方法可以选定构造方法创建实例