反思Java

Man*_*pta 5 java reflection

我只是搞砸了一个机会,没有回答2个问题.我仍然不知道答案,所以寻找它们:

[1]你有一个带有私有变量的Java类,没有getter/setter方法.你如何修改这些变量?

我的回答:你不能这样做,私有变量无法从外部访问.采访者:正确答案是"使用反思".

[2]您使用哪种反射方法来完成上述操作?我的回答:我不确定.采访者:再见.

根据我的经验,我(1)检查类是否存在(2)创建实例(3)检查方法是否存在(4)调用方法(5)继续使用类的实例.当然,我会捕获类似ClassNotFound和MethodInvocation的异常.但是有一个修改私有变量的技巧吗?人们这样做吗?TIA.

Bri*_*new 2

鉴于这种:

您有一个带有私有变量且没有 getter/setter 方法的 Java 类。如何修改这些变量?

我的回答是,您不需要特定的设置器/获取器,只需用其他非特定方法修改它们即可。在许多情况下,setter/getter 可以被视为公开实现。

为了使字段可访问,您必须调用Field.setAccessible()

这是一种我一时不知道的话题,并且必须查找是否/何时使用它(我不记得上次使用它是什么时候)。对于一个面试官来说如此关注这个问题似乎有点不寻常。