参见英文答案 > Accessing private variables in Java via reflection 1个
> Access private object using java reflection api 2个
我只是搞砸了一个机会,没有回答2个问题.我仍然不知道答案,所以寻找它们:
[1]你有一个带有私有变量的Java类,没有getter / setter方法.你如何修改这些变量?
我的回答:你不能这样做,私有变量无法从外部访问.
采访者:正确答案是“使用反思”.
[2]您使用哪种反射方法来完成上述操作?
我的回答:我不确定.
采访者:再见.
根据我的经验,我(1)检查类是否存在(2)创建实例(3)检查方法是否存在(4)调用方法(5)继续使用类的实例.当然,我会捕获类似ClassNotFound和MethodInvocation的异常.但是有一个修改私有变量的技巧吗?人们这样做吗? TIA.
You have a Java class with private variables and no getter/setter
methods. How do you modify such variables?
我的回答是你不需要特定的setter / getter,你只需要在其他非特定方法中修改它们.在许多情况下,可以将setter / getter视为暴露实现.
为了使字段可访问,您必须调用Field.setAccessible().
这是我不知道的那种话题,如果/当我使用它时必须查找(我不记得我上次使用它时).对于面试官如此挂起,这似乎有点不寻常.