2-1-2-05反射概述
反射:设计框架的灵魂
框架:半成品软件,可以在框架的基础上进行开发,可以简化代码编写
反射:将类的各个组成部分封装为其他对象,这就是反射机制
好处:
1.可以在程序运行的过程中操作这些对象
2.可以解耦,提高程序的可扩展性
String str = new String();//实例化对象 //经过反射机制,将String对象抽取出来封装到Class类对象中的Method[]中,当调用方法时就显示Method[]中的所有方法,再选择调用哪个方法 str.length(); }
获取class对象的方式:
1.Class.forName("全类名"):将字节码文件加载进内存,返回Class文件对象(在Source源代码阶段的调用)
2.类名.class:通过类名的属性class获取(在Class类对象阶段的调用)
3.对象名.getClass():getClass()方法是Object类中的方法(在Runtime运行阶段的调用)
//1.Class.forName("全类名"); Class aClass = Class.forName("reflect.ReflectEntity2"); System.out.println(aClass); //2.类名.Class; Class reflectEntity2Class = ReflectEntity2.class; System.out.println(reflectEntity2Class); //3.对象.getClass(); ReflectEntity2 reflectEntity2 = new ReflectEntity2(); Class aClass1 = reflectEntity2.getClass(); System.out.println(aClass1); //比较三者地址值是否相同 System.out.println(aClass==reflectEntity2Class);//true System.out.println(aClass==aClass1);//true System.out.println(reflectEntity2Class==aClass1);//true
输出结果:
结论:
同一个字节码文件(*.class)在一次程序运行的过程中只会被加载一次,不论哪种方式获取的对象都是同一个