利用反射获取指定字段名的值和设置字段的值
import java.lang.reflect.Field;
public class ReflectionExample {
public static void main(String[] args) {
try {
// 获取Class对象
Class<?> myClass = MyClass.class;
// 创建实例
Object obj = myClass.getDeclaredConstructor().newInstance();
// 获取字段
Field myField = myClass.getDeclaredField("myField");
// 获取字段的值
Object value = myField.get(obj);
System.out.println("Field name: " + myField.getName());
System.out.println("Field value: " + value);
} catch (Exception e) {
e.printStackTrace();
}
}
public static class MyClass {
private String myField = "Hello, this is myField!";
}
}
java反射获取字段一共有四个方式 :getField(), getDeclaredField(),getFields(), getDeclaredFields()。
其中getField(), getDeclaredField()获取单个属性,getFields(), getDeclaredFields()获取多个属性。
根据实体类字段上的注解获取注解的value
Class<?> clazz = myClass.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(ApiModelProperty.class)) {
ApiModelProperty apiModelProperty = field.getAnnotation(ApiModelProperty.class);
String value = apiModelProperty.value();
}