反射
1. 什么是反射
将类的各个组成部分封装为其他对象,这就是反射机制。
好处:
(1)可以在程序运行过程中操作这些对象
(2)可以解耦,提高程序的可扩展性
2. 获取class对象的三种方式
①Class.forName(“全类名”)
将字节码文件加载到内存,返回class对象
多用于配置文件中,将类名定义在配置文件中。读取文件,加载类。
②类名.class()
通过类名的属性class获取
多用于参数的传递
③对象.getClass()
多用于对象获取字节码文件对象的方式
1 package cn.itcats02.day_01; 2 3 public class test01 { 4 5 public static void main(String[] args) throws ClassNotFoundException { 6 //Class.forName("全类名") 7 Class cls1 = Class.forName("cn.itcats02.day_01.Person"); 8 System.out.println(cls1); 9 10 //类名.class 11 Class cls2 = Person.class; 12 System.out.println(cls2); 13 14 //对象.getClass() 15 Person p = new Person(); 16 Class cls3 = p.getClass(); 17 System.out.println(cls3); 18 19 //验证是否是同一个对象 20 System.out.println(cls1 == cls2); 21 System.out.println(cls2 == cls3); 22 System.out.println(cls1 == cls3); 23 24 //结论:同一个字节码文件在一次程序运行过程中只会被加载一次 25 26 } 27 }
3. Class对象的功能