下午看了一下Lambda表达式的一份文档,写的真是不错。State of the Lambda 里边很详细的表述了Java8中的Lambda是如何被创造出来的, 以及非常详细的用法。
简单的说, Lambda就是为了解决内部类带来的问题。其中定了几个名词: Functional Interface 、 Functional Interface Method、Method reference
Lambda表达式可以忽略方法的名字, 而只要求签名相同即可, 甚至参数类型都不需要, 这些可以通过类型推断来完成。这次Java8添加了更宽的类型推断,之前我一直很奇怪为什么条件表达式就不能进行类型推断呢。
Set<Integer> si = flag ? Collections.singleton(23)
: Collections.emptySet();
其实Java8加入的特性并不多, 但是我想这些特性一定会给Java的表达性带来相当相当的改变, 光从JDK8加入的新的函数库就能够看出来。以后在其它类库中一定也可以看到的。