概念
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
作用
在运行时判断任意一个对象所属的类;在运行时获取类的对象;在运行时访问java对象的属性,方法,构造方法等。
功能实现
获取类
1. Class.forName(“com.java.reflection. Employee”);
通过全类名获取,用的比较多,但可能抛出ClassNotFoundException异常
2. Employee e=new Employee ; e.getClass()
通过对象的getClass()方法获取,这个使用的少(一般是传的是Object,不知道是什么类型的时候才用)
3. Employee.class;
直接通过类名.Class的方式得到
获取类的 Fields
Class e = Class.forName(“com.java.reflection.Employee”);
Field[] fields = e.getFields();
for(Field f : fields) {
System.out.println(f);
}
// 使用 getDeclaredFields 获取属性
fields = classType.getDeclaredFields();
for(Field f : fields){
System.out.println(f);
}
获取方法,构造方法,父类和父接口
获取方法
getDeclaredMethods()
getReturnType()
getParameterTypes()
getDeclaredMethod("方法名",参数类型.class,…)
获取构造方法
getDeclaredConstructors()
getDeclaredConstructor(参数类型.class,……)
父类和父接口
getSuperclass()
getInterfaces()
创建对象
Class c = Class.forName(“com.java.reflection.Employee”);
Object obj = null;
obj = c.newInstance();