关于JavaEE匿名内部类和Lambda表达式的注意事项 |
||||||||
+ 目录
前言上一篇介绍了内部类的前三种类型,链接如下: 接下来将详细介绍匿名内部类以及Lambda表达式的用法和注意事项。
一、匿名内部类定义在方法中(方法的形参或者实参),没有任何权限修饰符,甚至连类名称都没有的内部类称为匿名内部类。
?
注意事项:匿名内部类也是方法内部类中的一种,最多用在方法形参中。接口无法直接实例化对象的,因此我们此处的new的是IMessage接口的子类,只不过这个子类只在fun方法中使用一次
这个小括号里面的其实就是匿名内部类,实现了Comparator接口,覆写了compare方法
二、Lambda表达式
1.背景Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda 表达式(Lambda expression)可以看作是一个匿名函数,基于数学中的λ演算得名,也可称为闭包(Closure) 。
2.函数式接口要了解Lambda表达式,首先需要了解什么是函数式接口,函数式接口定义:一个接口有且只有一个抽象方法 。
?
注意: 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口。 如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口,这样如果有两个抽象方法,程序编译就会报错的。所以,从某种意义上来说,只要你保证你的接口中只有一个抽象方法,你可以不加这个注解。加上就会自动进行检测的。 接口中有普通方法但只有一个抽象方法也是可以满足函数式接口定义的。
3.Lambda表达式的语法能使用Lambda表达式的前提就是接口必须是函数式接口,只有唯一的一个抽象方法。
?
Lambda表达式由三部分组成:
4.Lambda表达式的基本使用Lambda表达式有四种情况,对应抽象方法的四种分支。 定义以下四种接口:
?
(1)无返回值无参数
(2)无返回值有参数
(3)有返回值无参数
(4)有返回值有参数
总结Lambda表达式的优点很明显,在代码层次上来说,使代码变得非常的简洁。缺点也很明显,代码不易读。 优点: 代码简洁,开发迅速方便函数式编程非常容易进行并行计算Java 引入 Lambda,改善了集合操作 缺点: 代码可读性变差在非并行计算中,很多计算未必有传统的 for 性能要高不容易进行调试 到此这篇关于关于JavaEE匿名内部类和Lambda表达式的注意事项的文章就介绍到这了,更多相关java匿名内部类和Lambda表达式内容请搜索陆零网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持陆零网络! |