内部类的用途是什么

2022-08-31 16:40:39

我正在回顾java中内部类的概念。到目前为止,我所理解和应用的java内部类具有链接或访问其外部/封闭类的方法和字段。

我的问题:

  1. 何时应创建或定义内部类?
  2. 内部类是否被视为“辅助类”?
  3. 你做一个内部类的指标是什么,它们的其他目的是什么?

答案 1

内部类最适合于对在一个位置中使用的类进行逻辑分组。例如,如果要创建仅由封闭类使用的类,则为该类创建单独的文件是没有意义的。相反,您可以将其添加为“内部类”

根据java教程

使用嵌套类的令人信服的原因包括:

  • 它是一种对仅在一个位置使用的类进行逻辑分组的方法。
  • 它增加了封装。
  • 它可以带来更具可读性和可维护性的代码。

答案 2

内部类的经典用法是在容器内实现迭代器(例如,ArrayList - look for )。容器想要向世界其他地方公开的所有内容都是 .但是,它必须创建该迭代器的一些具体实现,可能熟悉容器的内部结构。使用内部类隐藏实现,同时使其靠近容器的实现。作为内部(即非静态),它被绑定到该容器的特定实例,这允许它访问私有容器成员。class ItrIterator

有几种类型的内部类 - 非静态嵌套类,本地类和匿名类。每个类都有一个不同的目的,所以当询问一个内部类时,你应该指定你说的是哪种类。

假设你指的是非静态内部类,我会说使用它们的原因与使用常规类(即抽象和将代码划分为逻辑单元)相同,但是没有理由让这种类的使用对世界其他地方可见。当然,您也可以将嵌套类设置为公共,在这种情况下,您可以使它们嵌套而不是独立,以表达它们与外部类的紧密关系。