A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ccyznhy 中级黑马   /  2013-8-26 17:13  /  1102 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下代码如果类中的方法声明是私有的 就不能解决了,请教大家怎么解决啊?
private static void setProperties(Object rpt,
                        String propertyName, Object value) throws IntrospectionException,
                        IllegalAccessException, InvocationTargetException {
                PropertyDescriptor pd2=new PropertyDescriptor(propertyName,rpt.getClass());
                Method methodSetY=pd2.getWriteMethod();
                methodSetY.invoke(rpt, value);
        }

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 薛淑凯 于 2013-8-26 17:59 编辑

中文文档翻译的不全。
public Method getWriteMethod()Gets the method that should be used to write the property value.
Returns:
The method that should be used to write the property value. May return null if the property can't be written.私有了就算不存在了吧

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
属性获取和设置必须要有公开接口给用户才行,你的setProperties()方法如果是私有的,没有公开接口,你给谁去调用?
回复 使用道具 举报
可以通过暴力访问来访问私有化成员:通过pd2.getDeclaredWriteMethod();通过这个设置成可以访问。
                                                                  pd2.setAccessible(true);这个设置成可调用。
这两部共同组成了暴力访问。

回复 使用道具 举报
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决

详情参考: 如何更改分类

保持队形,谢谢合作{:soso_e121:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马