什么是反射
反射能做什么
分析类
查看并使用对象
应用场景
类加载器(ClassLoader)
负责将类的字节码文件(.class文件)加载到内存中,并生成对应的Class对象
Class对象
java.lang.Class类的对象,也叫字节码文件对象,每个Class对象对应一个字节码文件
类是加载时机
创建类的实例
访问类的静态成员
初始化类的子类
class User extends Person{};
User user = new User();
反射方式创建类的Class对象
Class clazz = Class.forName(“类的正名”);
正名:包名+类名
获取Class对象(字节码文件)的三种方式
1.Object类的getClass方法
2.类的静态属性
3.Class类的静态方法
Class clazz = Class.forName(“类的正名”);
正名:包名+类名
案列
public class ReflectDemo {
public static void main(String[] args) throws ClassNotFoundException {
//需求:获取Class对象
//方式一
Student stu = new Student();
Class clazz1 = stu.getClass();
//方式二
Class clazz2 = Student.class;
//方式三
Class clazz3 = Class.forName("Note.Student");
System.out.println(clazz1==clazz2);
System.out.println(clazz2==clazz3);
}
}