反射:框架设计灵魂
框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
反射: 将类的的各个组成封装为其对象其他对象,这就是反射机制
好处:
1.可以在程序运行过程中,操作这些对象
2.可以解耦(降低程序的耦合性),提高程序的可扩展性。
获取Class对象的方式:
1.Class.forName("全类名"):将字节代码文件加载进内存,返回Class对象
*多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2.类名。.class:通过类名的属性class获取
*多用于参数的传递
3.对象.getClass():getClass()方法Objiect类中的定义着
*多用于对象的获取字节码的方式
结论:
同一个字节码(*.class)在一次程序运行过程中,只会被加载一次,不会通过哪一种方式获取的Class对象都是同一个。
public class ReffectDemo01 {
public static void main(String[] args)throws ClassNotFoundException {
//1.class.forName("全类名")
Class cls1=Class.forName("domain.Person");
//Person包加上domain包
System.out.println(cls1);
//2.类名.class
Class cls2= Person.class;
System.out.println(cls2);
//3.对象.getClass()
Class cls3=Person.class;
System.out.println(cls3);
//比较三个对象
System.out.println(cls1==cls2);//true
System.out.println(cls1==cls3);//true
Class c= Student.class;
System.out.println(c==cls1);
}
}