假设我有一个抽象类 AbstractBarrelComponent
,它扩展了 Component
类。该类使用名为 Barrel
的类来实现某些想象的目的。
如果唯一可以/应该使用 Barrel
类的类是 AbstractBarrelComponent
及其子类,那么我的 Barrel
类应该驻留在哪里?
我所说的“驻留”是指该类应该位于其自己的文件 Barrel.java 中,还是应该是 AbstractBarrelComponent.java 中受包保护的类?对于这种情况有通用的约定吗?
最佳答案
不同的程序员和组织对此使用不同的标准,我认为没有一个正确的答案。重要的是选择一个标准并坚持下去。
我个人的标准是内部类始终是私有(private)的。如果子类需要访问它,那么它要么应该位于外部 protected 类中,要么应该通过委托(delegate)提供对其方法的访问。唯一的缺点是你最终会得到更多的小类授课。但是,坦率地说,现代干净的编码风格依赖于良好的 IDE,这些 IDE 可以轻松地在代码中导航,因此对导航类进行分组的需要基本上已经消失了。
顺便说一句,我觉得不幸的是,Java 的设计者没有区分 protected 子类访问和 protected 同一 namespace 中的所有类的访问。这些确实是完全独立的用例。在您的情况下,倾向于将其设为内部 protected 类而不是外部 protected 类,以限制对子类的访问。如果这两种用途有一个单独的关键字,那就更好了。
关于Java类的用途非常有限,但不限于一个类。外在还是内在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27261356/