Field是什么
Field是一个类,位于java.lang.reflect包下。在Java反射中Field类描述的是类的属性信息,功能包括:
- 获取当前对象的成员变量的类型
- 对成员变量重新设值
Field常用方法
getType(): 获取属性声明时类型对象(返回class对象)
getGenericType() : 返回属性声的Type类型
getName() : 获取属性声明时名字
getAnnotations() : 获得这个属性上所有的注释
getModifiers() : 获取属性的修饰
isEnumConstant() : 判断这个属性是否是枚举类
isSynthetic() : 判断这个属性是否是 复合类
get(Object obj) : 取得obj对象这个Field上的值
set(Object obj, Object value) : 向obj对象的这个Field设置新值value
Field获取实体类的属性名和属性值
- 获取实体类 返回的是一个数组 数组的数据就是实体类中的字段
- 添加setAccessible()因为的字段是用private修饰的
- 输出属性名和属性值
实体UserVO
/**
* @Author charles.yao
* @Description
* @Date 2022/12/26 22:45
*/
public class UserVO {
private String name;
private String lastName;
private Integer age;
public UserVO(String name, String lastName, Integer age) {
this.name = name;
this.lastName = lastName;
this.age = age;
}
public UserVO() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
测试类
/**
* @Author charles.yao
* @Description
* @Date 2022/12/26 22:46
*/
public class Test {
public static void main(String[] args) {
UserVO userVO =new UserVO();
userVO.setAge(11);
userVO.setLastName("老张");
userVO.setName("小名");
//获取useroVo所有字段
Field[] fields = userVO.getClass().getDeclaredFields();
try {
for (Field field : fields) {
field.setAccessible(true);
System.out.println("字段名称"+field.getName()+"=字段值"+field.get(userVO));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
运行结果
字段名称name====字段值小名
字段名称lastName====字段值老张
字段名称age====字段值11