Java中反射机制的概念
- 反射是Java中很重要的机制,使Java语言成为动态语言的标志。
- 反射机制是指Java运行过程中添加、使用新类、也可以分析、使用新类中的成员(域、方法、构造方法)。
- 反射就是把java类中的各种成分映射成一个个的Java对象,与反射相关的类都在java.reflect包中。
当类加载器加载一个类后,jvm会自动创建Class类的对象保存被加载类的相关信息。在运行期间,一个类只有一个Class对象产生,类在创建对象时一定会调用构造方法。
可以使用一下三种方法获取Class对象;
- 因为所有类都自动继承Object类,可以用Object类的getClass()方法获得对应的Class对象。但是首先需要new出Class对象。
- 可以用被加载类的class静态属性获得Class对象。
- 也可以给Class类的forName()静态方法输入真实路径获得Class对象。(推荐使用)
reflect包中的常用类以及重要方法:
Class类中newInstance()来创建Class对象表示的目标类的对象,会调用目标类默认无参构造函数。
Field类的对象可以封装类中字段的信息,使用getModifiers()获得字段的访问权限,以数值的方式返回。
Method类的对象可以封装类的成员方法的信息,可以使用Method类invoke(Object,Object…)来执行方法。
Constructor类对象可以封装类的构造方法信息,使用Constructor类中的newInstance(Object…)调用构造方法创建目标类对象。
框架就是利用反射机制的高级应用的例子。