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

> 原文： [https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html](https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html)

如[嵌套类](nested.html)一节所述，嵌套类使您能够对仅在一个地方使用的类进行逻辑分组，增加封装的使用，并创建更易读和可维护的代码。本地类，匿名类和 lambda 表达式也具有这些优点;但是，它们旨在用于更具体的情况：

*   [本地类](localclasses.html)：如果您需要创建一个类的多个实例，访问其构造函数或引入一个新的命名类型（例如，因为您需要稍后调用其他方法），请使用它。

*   [匿名类](anonymousclasses.html)：如果需要声明字段或其他方法，请使用它。

*   [Lambda 表达](lambdaexpressions.html)：

    *   如果要封装要传递给其他代码的单个行为单元，请使用它。例如，如果希望对集合的每个元素执行某个操作，完成进程或进程遇到错误，则可以使用 lambda 表达式。

    *   如果您需要一个简单的函数式接口实例并且不应用任何前述条件（例如，您不需要构造函数，命名类型，字段或其他方法），请使用它。

*   [嵌套类](nested.html)：如果您的要求与本地类的要求类似，则希望使类型更广泛可用，并且不需要访问局部变量或方法参数。

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