动态语言的标志
是什么
反射允许程序在运行时对任意类进行动态操作,包括:
- 创建对象
- 判断/调用类所具有的成员变量和方法
- 判断对象所属的类
- 获取泛型信息
- 处理注解
- 生成动态代理
三种获得Class对象的方式
全限定名:Class.forName(“类的全限定名”) [ClassNotFoundException异常]
Class c = Class.forName("java.lang.String");
Get方法:实例对象.getClass()
Object o = new Object();Class c = o.getClass();
类字面常量:类名.class/基本包装类型.TYPE
Class clazz = int.class;Class clazz2 = Integer.TYPE;
类的加载器:
ClassLoader classLoader = ReflectionTest.class.getClassLoader();Class clazz = classLoader.loadClass("com.karezi.Demo");
常用的类
java.lang.Class:反射的核心类,通过Class类可以获取类的属性,方法等内容信息
- java.lang.reflect.Constructor:表示类的构造方法
- java.lang.reflect.Field:表示类的属性,可以获取和设置类中属性的值
- java.lang.reflect.Method:表示类的方法,可以用来获取类中方法的信息或执行方法
