好吧,即使一个类没有 getter 和 setts,也不意味着该类中没有其他方法可以修改其状态。毕竟,如果他们在课堂上是因为课堂需要他们执行任何类型的任务。因此,其他方法可能会修改类的状态作为其职责的一部分。
例如,如果您的类是银行账户类,可能没有直接设置账户余额的方法,但可能有一些方法可以接受诸如取款或存款之类的交易,最终会在内部修改该类的状态。
所以从一开始这确实是一个糟糕的问题,因为没有足够的上下文,答案很困难。反射可能是一种选择,但如果您使用的是安全管理器,则可能会阻止反射修改私有字段,因此这也可能是一个错误的答案。
所以,你看,这个问题还不够好,没有上下文就没有意义。根据您获得的详细信息,也许该问题的答案应该是另一个问题,例如:
为什么要修改类的私有字段?毕竟他们是私人的,这是有原因的。所以,基本上如果你发现你需要改变它们,你需要做的就是坐下来重新考虑你的设计并确定你的类是否没有正确的公共接口。
该答案可能会导致面试官为您提供更多背景信息,然后您可以提供适当的答案。例如,现在面试官可能会说这个类是第三方框架的一部分,而你没有它的源代码,所以不可能提供 getter/setter 方法,但你不得不读/写一些此框架的给定对象的私有状态作为解决某些问题的解决方法。
现在,您将拥有更多上下文,您可以提出另一个问题,例如:您是否在此应用程序上使用安全管理器?如果他/她说不,那么您可以说,在这种情况下,反思是一种选择......