Jdk8提供的函数式接口都在java.util.function包下,Jdk8的函数式类型的接口都有@FunctionInterface注解所标注,但实际上即使没有该注解标注的有且只有一个抽象方法的接口,都可以算是函数式接口。
今天起,我们来学习Java开发工程师必备技能之『函数式编程』——Lambda表达式。我们知道JDK8是Java一个重要的更新版本,更新了很多的特性,例如:新增了日期操作类、接口增加静态和默认方法、Lambda 表达式、函数式接口、多重注解、Stream类、Optional空指针处理类等等的特性,而函数式编程就是其中重要的特性,这篇我们先来了解下Lambda 表达式。
仔细想想,刚刚做了这么多,目的就是一个,让签名为 C f 的函数可以无需修改地应用到盒装类型 Box< A>和 Box< B> 上,并且产生一个 Box< C>,在函数式语言中有更加方便的方法,那就是应用函子。
Lambda 表达式和方法引用并没有将 Java 转换成函数式语言,而是提供了对函数式编程的支持,这些特性满足了很大一部分的、羡慕 Clojure 和 Scala 这类更函数化语言的 Java 程序员。
接着再来说说Lambda 的历史,虽然它在 JDK8 发布之后才正式出现,但是在编程语言界,它是一个具有悠久历史的东西,最早在 1958 年在Lisp 语言中首先采用,而且虽然Java脱胎于C++,但是C++在2011年已经发布了Lambda 了,但是 JDK8 的 LTS 在2014年才发布,所以 Java 被人叫做老土不是没有原因的,现代编程语言则是全部一出生就自带 Lambda 支持,所以Lambda 其实是越来越火的一个节奏~
这个 List 中的元素类型都是 String类型,Java 的 String 类实现了 Comparable 接口,所以使用 Collections 接口的 sort 方法对元素进行排序的时候,就会按照 String 类型对 Comparable接口的实现逻辑规则,逐个比较完成排序。
接着再来说说Lambda 的历史,虽然它在 JDK8 发布之后才正式出现,但是在编程语言界,它是一个具有悠久历史的东西,最早在 1958 年在Lisp 语言中首先采用,而且虽然Java脱胎于C++,但是C++在2011年已经发布了Lambda 了,但是 JDK8 的 LTS 在2014年才发布,所以 Java 被人叫做老土不是没有原因的,现代编程语言则是全部一出生就自带 Lambda 支持,所以Lambda 其实是越来越火的一个节奏~
转载:www.cnblogs.com/fengzheng/p/13083115.html就在今年 Java 25周岁了,可能比在座的各位中的一些少年年龄还大,但令人遗憾的是,竟然没有我大,不禁感叹,Java 还是太小了。(难道我会说是因为我老了?