1
12
你必须使用
然而,你的计划听起来像是对继承概念的严重侵犯。未来校对的最好方法是完全避免这种事情。什么 是 你想这样做,你认为需要这种反省的恶作剧吗? |
2
1
据我所知,没有办法了解爪哇的“儿童班”。一个更好的解决方案是在a上创建一个抽象方法,而b必须实现这个抽象方法,然后调用它吗?
编辑: 如果我误解了您的问题,并且您实际上想要了解父类,那么是的:getDeclaredFields()是要使用的正确的反射方法,如其他海报所述。 附加编辑: 我不想一直修改这个答案,但是… 一般来说,如果您试图授予对父类的访问权,那么做到这一点的“正确”和“未来证明”方法是创建抽象方法,这些方法是getter或setter(或者更复杂,如果必要的话),然后让子类尊重这些方法或不尊重这些方法,并做出适当的响应。 有人说,你 可以 像别人说的那样做:
然而,只有当C总是直接从B继承的时候,这才有效。从本质上讲,反射是非常复杂和具体的。我必须在一个我正在做的项目上做很多事情(不要问,相信我,你不想知道),我尽量避免。除非有充分的理由让a需要受保护的字段,并且它正在发现有关这些字段的信息,否则您可能希望使用抽象方法。我还将提交,您可能可以用抽象方法解决另一个问题,但这可能会有点困难。 |
3
1
然后迭代这些字段,得到您想要的字段。
如果层次结构增长,可以将上面的内容转换为对
|