上一篇博客介绍了java8新增的Lambda表达式,这一节介绍一下java8的函数式编程,两者之间有什么联系呢?请往下看~~~
Lambda表达式怎样在java类型中表示的呢?
语言设计者投入了大量的精力来思考怎样使现有的函数友好地支持lambda。终于採取的办法是:添加函数式接口的概念。函数式接口接口就是具有一个方法的普通接口。像这种
接口能够被隐式的转换为Lambda表达式!。。
每个Lambda表达式都相应一个 类型,一般是接口类型。而“函数式接口”是指只包括一个抽象方法的接口,每个该类型的lambda表达式都会被匹配到这个抽象方法。
由于默认方法不算抽象方法,所以你也能够给你的函数式接口加入默认方法。!
。
。
我们能够把Lambda表达式当作随意一个抽象方法的接口类型。你的接口达到这个要求。你仅仅须要给你的接口加入@FunctionalInterface注解,编译器假设发现你标注了这个注解的接口有多于一个接口的时候会报错!!
!
!
看一下以下函数式编程的样例:
package com.panther.dong.java8.functional; /** * Created by panther on 15-8-22. */ public class FunctionTest { public static void main(String[] args) { Converter<String, Integer> converter = (from) -> Integer.parseInt(from); Integer integer = converter.convert("231"); System.out.println(integer); } } @FunctionalInterface interface Converter<F, T> { T convert(F from); }
执行结果:
231
注意:接口中的默认方法和静态方法并不会影响函数式接口的规定。能够随意使用,可是普通方法仅仅能有一个