如何访问私有成员?

ding 2003-10-15 06:54:57
背景:
在某项目中,需要根据方法的形式参数来实例化相应的对象以便对方法进行测试。例如有一个方法:
public void test(SomeObject obj)
其中SomeObject的源代码有可能得不到(调用第三方的包时),需要实例化一个SomeObject,并且可以对SomeObject的各个成员变量(包括私有)随意赋值?

现在的问题在于:
使用java.lang.reflect中的相应方法,只能得到各个成员变量的声明,不能设置私有成员变量的值;
由于不清楚被测试类中各个方法的语义,无法使用现有的方法来对私有成员变量赋值;
由于没有源代码,对源代码打桩也是不可能实现的。

那么,请问,怎样才能实例化一个类,并能对其所有成员随意赋值?
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiningchen 2003-10-17
  • 打赏
  • 举报
回复
我以前是过这样的方法,不可以。应该尽量避免在程序中出现这种状况。尽量使用interface来作为各个模块之间的contract
lyid 2003-10-17
  • 打赏
  • 举报
回复
错了
第二句是AccessibleObject.setAccessible(fields,true);
lyid 2003-10-17
  • 打赏
  • 举报
回复
Field[] fields = aclass.getDeclaredFields();
AccessibleObject.setAccessible(field,true);
ding 2003-10-15
  • 打赏
  • 举报
回复
java.lang.reflect就是反射机制
truezerg 2003-10-15
  • 打赏
  • 举报
回复
用反射的机制

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧