1. 反射的定义
反射就是可以在运行时加载类信息,并可以创建其对象访问其属性和方法。这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2. 反射的应用
动态创建对象。平常我们写代码的时候,创建一个Person对象,例:Person p = new Person(); 编译器就会根据这句代码创建一个Person对象,但如果我们想要根据输入的对象名来创建对象这时候应该怎么处理呢?
这时候就需要反射技术,反射技术核心功能就是动态创建对象。
Class c = Class.forName("java.util.Date"); // 类名需要全路径
Object o = c.newInstance(); // class根据类名创建一个对象
3. Class类
Class是每个类都有一个隐藏对象,jvm根据每个类的Class对象管理这个类。
Class对象包含了该类的属性、方法等。获取一个类的Class对象即可获取该类的所有信息。
当使静态创建一个对象时,jvm会自动获取该类的Class对象
当动态创建一个对象时,步骤:
3.1 jvm获取该类的Class对象,使用Class.forName();
3.2 再根据Class类中的newInstance()方法创建一个对象