反射----获取class对象的五种方法
反射Reflection
配合注解使用会格外强大,反射注解,天生一对
类如何加载?
动态语言和静态语言。我知道是什么,不用总结了。
由于反射,Java可以称为准动态语言。
允许通过反射获得类的全部信息
一个c类只有一个Class对象,对应加载到JVM中的.class文件。一个类只有一个Class对象,这就意味着,不管你创建多少的对象,他都只有一个类对象。
实例化的对象----->通过getClass()方法获取到类------->得到完整的“包类”名称。
通过反射获取类,
五种获取class对象的方法。打印类对象出现全包名
public static void main(String[] args) throws ClassNotFoundException {
Person person = new Student ();
System.out.println ("这个人是"+person.name);
//方法一:由对象实例.getClass(),获取
Class c1 = person.getClass ();
//方法二L:由类的完整路径名获取Class.forName("Reflection.Student");
Class c2 = Class.forName ("Reflection.Student");
System.out.println (c1);
System.out.println (c2);
//方法三:直接由已知类名获取类的实例
Class c3 = Student.class;
System.out.println (c3);
//方法四:基本的包装类都有一个Type属性,包装类获取类的实例
Class c4 = Integer.TYPE;
System.out.println (c4);
//方法五:由子类获取父类的Class对象
Class c5 = c1.getSuperclass ();
System.out.println (c5);
}
结果:
class Reflection.Student
class Reflection.Student
class Reflection.Student
int
class Reflection.Person