java通过反射获取对象的所有的字段名称和值

java通过反射获取对象的所有的字段名称和值

对象:

@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int level;
    private String name;
}
		User user = new User(1,"wzx");
        //通过反射获取对象的所有字段,是一个数组
        Field[] declaredFields = user.getClass().getDeclaredFields();
        for (int i = 0; i <declaredFields.length ; i++) {
            //设置是否可以访问,如果不设置将报错
            declaredFields[i].setAccessible(true);
            System.out.println("字段:"+declaredFields[i]);
            System.out.println("字段名称:"+declaredFields[i].getName());
            System.out.println("字段值:"+declaredFields[i].get(user));
        }

不设置时报的错:

字段:private int com.example.entity.User.level
Exception in thread "main" java.lang.IllegalAccessException: Class com.example.controller.Cshi can not access a member of class com.example.entity.User with modifiers "private"
字段名称:level
	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
	at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
	at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
	at java.lang.reflect.Field.get(Field.java:390)
	at com.example.controller.Cshi.main(Cshi.java:28)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值