java setter方法,如何在Java中通过反射调用setter方法

how to invoke Bean private setter method by reflection in java

I can't Understand how to invoke private setter Method in My User Bean.

I all ready used PropertyDescriptor and many way but i am not access private

setter method by the Reflection.

public class GetterAndSetter

{

public static void main(String[] args)

{

GetterAndSetter gs = new GetterAndSetter();

User user = new User();

try {

gs.callSetter(user,"name","Sanket");

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IntrospectionException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private void callSetter(Object obj,String fieldName, Object value) throws IntrospectionException, InvocationTargetException, IllegalAccessException , IllegalArgumentException

{

PropertyDescriptor pd;

pd = new PropertyDescriptor(fieldName,obj.getClass());

pd.getWriteMethod().invoke(obj,value);

}

}

This Code I would only access the filed and set the value in filed,But I can't

access the setter Field directly to the Reflection

解决方案

This how you can call a private method in the User class:

try {

User user = new User();

Method method = User.class.getDeclaredMethod("setName", String.class);

method.setAccessible(true);

method.invoke(user, "Some name");

System.out.println("user.getName() = " + user.getName());

} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {

e.printStackTrace();

}

Note the call to method.setAccessible(true);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值