Java类的用途非常有限,但不限于一个类。外在还是内在?

标签 java class package subclass conventions

假设我有一个抽象类 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/

相关文章:

java - 使用 Micronaut 和 GraalVM 创建 AWS Lambda 函数时出现问题

reactjs - 属性 "aria-current=' 页面 '"with class=' 事件'即使在单击其他链接后也不会从第一个 NavLink 中消失

c++ - 队列 C++ 的运算符重载

java - 如何调用另一个类中的List类型方法

java - 如何通过单击不同包中的按钮打开另一个jframe

Python:如何在包级帮助菜单中嵌入所有文档字符串帮助?

r - 为什么 Cohen 的 kappa 计算在此列联表上的不同包之间失败?

java - 从使用 to_date 的数据库测试日期并针对 LocalTimeDate 进行测试

java - 如何创建在 JOptionPane 中打印数组的方法

java - 为什么我的图像即使出现在 Eclipse 中也没有出现在可执行 jar 中?