概念
反射机制指在程序运行过程中,对任意一个类都能获取其所有属性和方法,并且对任 意一个对象都能调用其任意一个方法。这种动态获取类和对象的信息,以及动态调用对象 的方法的功能被称为Java语言的反射机制。
Java的反射API
◎ Constructor类:表示类的构造方法。
◎ Class类:用于获取类的属性、方法等信息。
◎ Field类:表示类的成员变量,用于获取和设置类中的属性值。
◎ Method类:表示类的方法,用于获取方法的描述信息或者执行某个方法。
代码样例
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ClassReflex {
public static void main(String[] args) throws Exception {
// 获取 Class 方式
Class clazz = Class.forName("com.basis.Persion");
// 获取构造方法
Constructor [] constructors = clazz.getDeclaredConstructors();
Constructor c = clazz.getDeclaredConstructor(String.class);
// 获取成员属性
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields){
//验证字段的注解是否是Target注解 [可更换]
if(field.isAnnotationPresent(Target.class)){
// 获取注解 进行业务处理
Target target = field.getAnnotation(Target.class);
System.out.println(target.value());
}
}
// 获取方法属性
Method[] methods = clazz.getDeclaredMethods();
// 通过 Class实例化
Persion persion = (Persion)clazz.newInstance();
// 通过 构造方法实例化
persion = (Persion)c.newInstance("Li");
// 调用方法
Method method = clazz.getDeclaredMethod("",String.class);
method.invoke(persion,"BY");
}
}
扫描二维码关注公众号,回复:
11032054 查看本文章