Java教程是针对JDK 8编写的。本页面描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言特性的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能和已删除或弃用选项的信息,请参阅JDK发行说明。
如嵌套类章节中所述,嵌套类使您能够逻辑上分组仅在一个地方使用的类,增加封装性的使用,并创建更可读和可维护的代码。局部类、匿名类和Lambda表达式也具有这些优势;然而,它们用于更具体的情况:
局部类:如果需要创建一个类的多个实例、访问其构造函数或引入一个新的命名类型(例如,您需要稍后调用其他方法),则使用它。
匿名类:如果需要声明字段或其他方法,则使用它。
如果要封装要传递给其他代码的单个行为单元,则使用它。例如,如果希望在集合的每个元素上执行某个操作,当进程完成时,或者当进程遇到错误时,可以使用Lambda表达式。
如果需要一个简单的功能接口的实例,且不满足前述条件(例如,不需要构造函数、命名类型、字段或其他方法),则使用它。
嵌套类:如果您的需求与局部类相似,希望使类型更广泛可用,并且不需要访问局部变量或方法参数,则使用它。
如果需要访问封闭实例的非公共字段和方法,则使用非静态嵌套类(或内部类)。如果不需要此访问权限,则使用静态嵌套类。