首先,从百度所了解到的概念:Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。
这样一看,可能会觉得有些许的抽象、不理解,所以可以举一个例子来说明其中的一种意思,剩下的举一反三大概就都可以理解了。
我们先换一个概念来描述反射机制:对于一个字节码文件.class,Java在将其载入时,Java Virtual Machine(JVM,Java虚拟机)会产生一个java.lang.Class对象代表该.class字节码文件。这样,从该Class对象中就可以获得类的许多基本信息。
例如,我们用对象调用一个getClass()方法来获得该类对应的Class对象,即“对象.getClass()”。而这个方法是Object类中的一个方法,所以,所有对象调用该方法都可以返回所属类对应的Class对象。
例如语句:Person per=new Person(“张三”);
可以通过一下语句返回该类的Class对象:Class cObj=per.getClass();
所以,回到最初的概念,可以理解为:
Java反射机制在运行时,
可以构造任意一个类的对象,
也可以判断任意一个类所属的对象,以及类中的成员变量和方法,
还可以调用任意一个对象的方法
所以要想完成反射操作,就必须首先认识Class类。Class类是一个比较特殊的类,它是反射机制的基础。(Reflection)