一、反射
1. 反射(Reflection):允许在程序运行状态中,可以获取任意类中的属性和方法,并且可以操作任意对象内部的属 性和方法,这种动态获取类的信息及动态操作对象的属性和方法对应的机制称为反射机制。
2. 类对象 和 类的对象(实例)
(1) 类的对象(实例):基于某个类 new 出来的对象,也称为实例对象。
(2) 类对象:类加载的产物,封装了一个类的所有信息(包、类名、父类、接口、属性、方法、构造方法等)
3. 获取类对象的三种方式:
(1) 通过类的对象,获取类对象 Student s = new Student(); Class c = s.getClass();
(2) 通过类名获取类对象 Class c = 类名.class;
(3) 通过静态方法获取类对象 Class c=Class.forName(“包名.类名”); 注意:需要 权限类名:包名.类名
public class TestClass
{
public static void main(String[] args)
throws ClassNotFoundException
{
// 深入JVM实现原理 / JVM规范 // 通过反射技术 获取 类对象 Student s = new Student();
// 类的对象,实例 Class c=s.getClass(); // 获取类对象 System.out.println(c);
// 第二种方式:
Class c2=Class.forName("testflect.Student");
System.out.println(c2);
System.out.println(c==c2);
Class c3 = Student.class;
System.out.println(c3);
}
}