Java反射的机制的一点心得

本文介绍了如何使用Java反射机制来修改对象中的私有变量。详细解释了如何获取Class对象,并通过不同方法访问对象中的公有及私有字段。此外还演示了如何设置变量可访问性并给指定实例的变量赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天弄了一下Java的反射机制去修改一个对象中的私有变量,刚开始有点摸头不知脑的,然后百度,发现基本上都是一个模板,气死个人。后来还是零零散散的看了一些。

首先要有一个Class对象

   Class<?> cls = MyPojo.class;

然后获取这个对象中的变量:这里有几种方式,开始搞错了,老是抛异常

    Field field2=cls.getField("name");

这个方法,只能获取到cls中的public对象,对于私有变量是获取不到的,会抛异常,后来看了下注解:

Returns a Field object that reflects the specified public member field of the class or interface

当然也有变法访问私有变量:

  Field field = cls.getDeclaredField("name");

这个就可以访问公有,私有变量皆可。因为他是从错有声明变量中去获取。

然后如果要操作,就必须要有这个方法:

   field.setAccessible(true);

将其设置为可以访问:

然后如果要给某个变量赋值:

MyPojo instance=(MyPojo) cls.newInstance();

首先new一个实例出来:

field.setInt(instance, 10);

给这个实例中的field变量(int型)赋值为10

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值