反射: 将类的各个部分封装成对象,这就是反射机制
可以在运行过程中 操作这些对象
类加载有下面几个阶段
image.png
获取Class对象的方式
- Class.forName("全类名"):将字节码加载进内存,返回class对象
多用于配置文件,将类名定义在配置文件中,读取文件,加载类
2.类名.class :通过类名的属性class获取
多用于参数的传递
3.对象.getClass();在Object定义
多用于对象的获取字节码
public class ReflectionDemo {
public static void main(String[] args) throws ClassNotFoundException {
//使用类名获取
Class cls1 = Class.forName("Java_Basic.Person");
System.out.println(cls1);
// 类名.class
Class cls2= Person.class;
System.out.println(cls2);
//对象.getClass()
Person p = new Person();
Class cls3=p.getClass();
System.out.println(cls1==cls2);
System.out.println(cls2==cls3);
}
}
比较三个结果都是true
说明类对象在加载过程中只会被加载一次
Class对象的功能
获取功能
获取成员变量们
获取构造方法们
获取成员方法们
获取类名
image.png