何时将 Java 中的内部类用于辅助类

新手上路,请多包涵

例如,如果我有一个类和一个辅助类来执行它的某些功能,那么将它作为内部类是否有意义。

     public class Foo {
       private FooHelper helper;

       // constructor & any other logic

       public void doSomeThing() {
         helper.do();
       }
    }

    public class FooHelper {
        public void do() {
         // code
        }
    }

在上述情况下,将 FooHelper 作为内部类有意义吗?如果这听起来很愚蠢,我深表歉意,但我对用例有点困惑。

原文由 Hild 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 339
2 个回答

是的,将其作为内部类非常有意义。如果没有其他类需要它,请将其设为私有。如果它不需要独占访问外部类的成员,则将其设置为静态嵌套类,因为这样它需要的内存空间就会更少。

看看 官方教程 的推荐——

如果您需要访问封闭实例的非公共字段和方法,请使用非静态嵌套类(或内部类)。如果不需要此访问权限,请使用静态嵌套类。

原文由 MD Sayem Ahmed 发布,翻译遵循 CC BY-SA 3.0 许可协议

来自 JAVA SE 文档

为什么要使用嵌套类?

这是一种对只在一个地方使用的类进行逻辑分组的方法: 如果一个类只对另一个类有用,那么将它嵌入到那个类中并将两者放在一起是合乎逻辑的。嵌套这样的“帮助类”使它们的包更加精简。

它增加了封装: 考虑两个顶级类 A 和 B,其中 B 需要访问 A 的成员,否则这些成员将被声明为私有的。通过将类 B 隐藏在类 A 中,可以将 A 的成员声明为私有,而 B 可以访问它们。此外,B 本身可以对外界隐藏。

它可以导致代码更具可读性和可维护性:在顶级类中嵌套小类使代码更接近它的使用位置。

所以是的,将 FooHelper 用作内部类是有意义的。

原文由 ChandraBhan Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题