反思Java

前端之家收集整理的这篇文章主要介绍了反思Java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > 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().

这是我不知道的那种话题,如果/当我使用它时必须查找(我不记得我上次使用它时).对于面试官如此挂起,这似乎有点不寻常.

猜你在找的Java相关文章