概念
动态获取类的信息,就是反射。(在运行状态中,对任意一个类(class文件)),都知道这个类的所有属性和方法。
应用场景
对指定的类文件进行加载并获取其中的内容并调用时就需要使用反射机制。
优点
可以提供程序的扩展性
class对象
Class对象是对Java字节码文件的描述。
名称,字段,构造函数,一般函数。
该类可以获取字节码文件中的所有内容,反射就是依靠该类来完成的。
所以要获取一个类的信息,首先需要获取该类的字节码文件。
获取Class对象的方法
- Object类中的getClass()方法;使用这种方式,需要明确具体的类并创建对象
- 任何类型都局部一个镜头的属性.class来获取其对应的Class 对象,使用时需要明确是哪个类型。
- 通过给定的类的字符串名称来获取该类的Class对象,可以使用Class类中的方法来完成。 Class t = Class.forName(“java.lang.Thread”)
通过反射创建新实例
- Class.newInstance(); 调用默认的无参构造函数创建新实例
- Constructor.newInstance(Xxx …args); 通过构造函数对象来创建有参数的对象实例。
获取类中的其他信息
- 获取字段信息public Field[] Class.getDeclaredFields() //获取所有的字段
-
- 获取字段信息public Field[] Class.getFields() //获取公共的字段
- 获取字段信息public Field[] Class.getDeclaredFields()