javaSE_8系列博客——Java语言的特性(三)--类和对象(21)--何时使用Lambda 表达式?
2017-06-17 15:45
821 查看
如“嵌套类”一节所述,嵌套类使您能够逻辑地对仅在一个地方使用的类进行分组,提高程序的封装性,并创建更易读和可维护的代码。局部(本地)类,匿名类和lambda表达式都具备了这些优点 ; 但是,它们各自有更具体的情况使用场景:
局部(本地)类:如果您需要创建一个类的多个实例,访问其构造函数或引入新的命名类型(例如,以后需要调用其他方法),请使用它
匿名类:如果需要声明字段或其他方法,请使用它。
Lambda表达式:
1、如果您封装一个需要传递给其他代码的单个行为的单元,请使用它。例如,如果要对集合的每个元素,流程完成或进程遇到错误时执行特定操作时使用lambda表达式。
2、如果您需要函数接口的简单实例,并且不适用上述条件(例如,您不需要构造函数,命名类型,字段或其他方法),请使用它。
嵌套类:
1、如果您的要求类似于本地类的要求,则可以使用它,您希望使类型更广泛地可用,并且不需要访问局部变量或方法参数。
2、如果您需要访问封闭实例的非公有字段和方法,请使用非静态嵌套类(或内部类)。如果您不需要此访问权限,请使用静态嵌套类。
局部(本地)类:如果您需要创建一个类的多个实例,访问其构造函数或引入新的命名类型(例如,以后需要调用其他方法),请使用它
匿名类:如果需要声明字段或其他方法,请使用它。
Lambda表达式:
1、如果您封装一个需要传递给其他代码的单个行为的单元,请使用它。例如,如果要对集合的每个元素,流程完成或进程遇到错误时执行特定操作时使用lambda表达式。
2、如果您需要函数接口的简单实例,并且不适用上述条件(例如,您不需要构造函数,命名类型,字段或其他方法),请使用它。
嵌套类:
1、如果您的要求类似于本地类的要求,则可以使用它,您希望使类型更广泛地可用,并且不需要访问局部变量或方法参数。
2、如果您需要访问封闭实例的非公有字段和方法,请使用非静态嵌套类(或内部类)。如果您不需要此访问权限,请使用静态嵌套类。
相关文章推荐
- javaSE_8系列博客——Java语言的特性(三)--类和对象(19)--嵌套类(Lambda 表达式)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(20)--嵌套类(Lambda 表达式--VS--方法引用)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(21)--枚举类型
- javaSE_8系列博客——Java语言的特性(三)--类和对象(12)--使用this关键字
- javaSE_8系列博客——Java语言的特性(三)--类和对象(10)--对象的使用
- javaSE_8系列博客——Java语言的特性(三)--类和对象(18)--嵌套类(匿名类)
- JavaSE_8系列博客——Java语言的特性(六)--泛型(5)--泛型的使用
- javaSE_8系列博客——Java语言的特性(三)--类和对象(7)--给方法或者构造器传输信息
- javaSE_8系列博客——Java语言的特性(三)--类和对象(3)--类的声明
- JavaSE_8系列博客——Java语言的特性(五)--接口和继承(6)--默认方法的使用场景
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(6)-- 表达式、语句、块
- javaSE_8系列博客——Java语言的特性(三)--类和对象(6)--为你的类提供构造函数
- javaSE_8系列博客——Java语言的特性(三)--类和对象(17)--嵌套类(本地/局部类)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(5)--定义方法
- javaSE_8系列博客——Java语言的特性(三)--类和对象(8)--对象
- javaSE_8系列博客——Java语言的特性(三)--类和对象(9)--对象的创建
- JavaSE_8系列博客——Java语言的特性(六)--泛型(2)--何时何地使用泛型?
- javaSE_8系列博客——Java语言的特性(三)--类和对象(14)--初始化字段
- javaSE_8系列博客——Java语言的特性(三)--类和对象(2)--类(宏观概述)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(13)--理解类的成员