【发布时间】:2020-04-01 06:49:46
【问题描述】:
我正在为 Java 初学者阅读一本书。我看到了一个使用公共方法声明私有嵌套内部类的示例。有人可以解释一下含义吗?我如何确定私有嵌套类(静态/内部)方法应该是私有的还是公共的?
【问题讨论】:
标签: java nested inner-classes access-modifiers static-classes
我正在为 Java 初学者阅读一本书。我看到了一个使用公共方法声明私有嵌套内部类的示例。有人可以解释一下含义吗?我如何确定私有嵌套类(静态/内部)方法应该是私有的还是公共的?
【问题讨论】:
标签: java nested inner-classes access-modifiers static-classes
私有嵌套类仅在其封闭类内部可见,并且封闭类(和其他嵌套类)可以访问其私有方法。
因此,将它们的方法设为公共或私有对编译器来说并不重要,除非嵌套类当然扩展了基类或实现了接口,因此 必须 将其覆盖方法设为公共.公开方法也可能是必要的,因为它们是使用反射调用的(例如,如果它的实例被序列化为 JSON 或 XML,或者如果它们在 JSP 中访问)。
我倾向于使用与未嵌套类相同的规则来选择公开和私有的内容。这使得(对我来说)更清楚一些私有方法不是其公共 API 的一部分,因此不应该在嵌套类本身之外使用。如果我将嵌套类重构为顶级类,我不需要更改任何内容。
【讨论】: