何时使用嵌套类,本地类,匿名类和 Lambda 表达式

如第Nested Classes节中所述,嵌套类使您可以在逻辑上对仅在一个地方使用的类进行分组,增加对封装的使用,并创建更具可读性和可维护性的代码。本地类,匿名类和 lambda 表达式也具有这些优点。但是,它们旨在用于更特定的情况:

  • Local class:如果需要创建一个类的多个实例,访问其构造函数或引入新的命名类型(例如,因为稍后需要调用其他方法),请使用它。

  • Anonymous class:如果需要声明字段或其他方法,请使用它。

  • Lambda expression:

  • 如果要封装要传递给其他代码的单个行为单位,请使用它。例如,如果要在集合的每个元素上执行特定操作,流程完成或流程遇到错误时,可以使用 lambda 表达式。

    • 如果您需要功能interface的简单实例并且不符合上述条件(例如,不需要构造函数,命名类型,字段或其他方法),请使用它。
  • Nested class:如果您的要求与本地类的要求相似,想要使类型更广泛地使用并且不需要访问局部变量或方法参数,请使用它。

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