我需要更改对象的 URL,但我既没有源代码,也没有该对象的任何 getter 和 setter。我可以在 Eclipse 调试器中看到这些值,但我没有任何方法可以修改它。
变量port
接收一个我没有源代码可以访问的对象(它实现了DwsSoap
接口(interface))。
DwsSoap port = service.getDwsSoap();
我想更改此对象中的一个名为 address
的字段,但我不确定如何更改或检索它。
为了访问address
,我需要首先访问h
字段(如上图所示)。这就是我尝试的方法:
Object h = PropertyUtils.getProperty(port, "h");
但我得到一个NoSuchMethodException
:
java.lang.NoSuchMethodException: Unknown property 'h'
有没有办法可以访问和更改此变量的地址
?
最佳答案
您需要使用“原始”反射,而不是 Spring 的 PropertyUtils
。这是covered in the Java tutorial 。代码(模异常处理)看起来像这样:
DwsSoap port = ...;
Field hField = port.getClass().getField("h");
hField.setAccessible(true); // the field will probably be private
Object h = hField.get(port);
关于java - 无需访问源代码即可从对象获取/设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846355/