时间:2021-05-20
Java8引入了lambda表达式。lambda表达式并不是新功能,只是为了方便代码编写的语法糖。
但,即便是在其他语言已经司空见惯的lambda表达式,如果在Java中要支持它,还需要考虑各种向下兼容的问题。
简单的说,Java的lambda表达式支持,大约需要考虑2个方面
对于第一点的回答是FuntionalInterface的Annotation,第二点的回答是default方法。
FunctionalInteface
通过在一个interface上增加@FunctionalInterface, 表示这个接口是特殊interface。其特殊性体现在
Default方法
default方法只能在interface中声明。default方法使得interface也可以定义已经实现的方法。那么问题来了。interface为什么一定需要这个特性?java的interface不就是应该都只有抽象方法吗?
考虑一下这个例子
List<Integer> alist = new ArrayList<Integer>();alist.add(1);alist.add(2);alist.add(3);alist.add(4);alist.forEach((s)->System.out.println(s));List是JDK java.util的一个接口。此接口由来已久。如果要在其中引入forEach方法,而且支持使用lambda表达式,必须对List进行一些改变。但是,JDK要向下兼容,一旦对已知的List增加接口,势必无法保证兼容性。所以,出于这个原因,想办法增加了default方法。这使得一个接口可以定义默认方法,以保全JDK原有的接口可以继续向下兼容。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
什么是Lambda表达式,java8为什么使用Lambda表达式?“Lambda表达式”(lambdaexpression)是一个匿名函数,Lambda表达式基
快速回顾1.Lambda表达式:(参数)->{主体}Lambda表达式打开了函数式编程爱好者继续使用Java的大门。Lambda表达式需要零个或多个参数,这些参
一、Lambda表达式简介Lambda表达式,是Java8的一个新特性,也是Java8中最值得学习的新特性之一。(另一个新特性是流式编程。)Lambda表达式,
Android中Lambda表达式的使用实例详解Java8中着实引入了一些非常有特色的功能,如Lambda表达式、streamAPI、接口默认实现等等。Lamb
前言我们在上一篇文章中以实例讲解如何定义和使用lambda表达式,以及与其它语言相比,lambda表达式在Java中的特殊规范。并且提到,lambda表达式可以