反射概述:
1、反射是指对于任何一个Class类,在“运行的时候”都可以直接得到这个类全部成分
2、在运行时,可以直接得到这个类的构造器对象:Constructor
3、在运行时,可以直接得到这个类的成员变量对象:Field
4、在运行时,可以直接得到这个类的成员方法对象:Method
5、这种运行时动态获取类信息以及动态调用类中成分的能力称为Java语言的反射机制
Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以得到任意一个对象所属的类的信息,可以调用任意一个类的成员变量和方法,可以获取任意一个对象的属性和方法。这种动态获取程序信息和动态调用对象的功能叫做Java语言的反射机制。
反射机制的优点是可以实现动态创建对象和编译(即动态编译),特别是在Java EE的开发中,反射的灵活性表现得十分明显。例如:一个大型的软件,不可能一次就把程序设计得很完美,当这个程序编译、发布上线后,如果需要更新某些功能,不可能让用户把以前的软件卸载,再重新安装新的版本。这时,如果采用静态编译,需要把整个程序重新编译一次才可以实现功能的更新,而采用反射机制,程序可以在运行时动态编译和创建对象,不需要用户重新安装软件即可实现功能的更新。
反射的关键:
反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分
总之反射的核心思想和关键就是:得到编译以后的class文件对象
获取Class类的对象的三种方式:
1:Class c1=Class.forName(“全类名”);
2:Class c2=类名.class
3:Class c3=对象.getClass();
public class 反射机制_1 {
//反射的第一步:获取Class对象
public static void main(String[] args) throws Exception {
//Class类中的一个静态方法:forName(全限名:包名 + 类名)
Class c=Class.forName("IT2.反射机制_1");
System.out.println(c);//反射机制_1.calss
//类名.class
Class c2=反射机制_1.class;
System.out.println(c2);
//对象.getClass()获取对象对应类的Class对象
反射机制_1 s=new 反射机制_1();
Class c3=s.getClass();
System.out.println(c3);
}
}