java8新增特性(二)----函数式接口(Functional)
2015-08-22 15:40
525 查看
上一篇博客介绍了java8新增的Lambda表达式,这一节介绍一下java8的函数式编程,两者之间有什么联系呢?请往下看~~~
Lambda表达式如何在java类型中表示的呢?
语言设计者投入了大量的精力来思考如何使现有的函数友好地支持lambda。最终采取的办法是:增加函数式接口的概念,函数式接口接口就是具有一个方法的普通接口。像这样的
接口可以被隐式的转换为Lambda表达式!!!
每一个Lambda表达式都对应一个 类型,通常是接口类型。而“函数式接口”是指仅仅包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。
因为默认方法不算抽象方法,所以你也可以给你的函数式接口添加默认方法!!。。
我们可以把Lambda表达式当作任意一个抽象方法的接口类型,你的接口达到这个要求,你只需要给你的接口添加@FunctionalInterface注解,编译器如果发现你标注了这个注解的接口有多于一个接口的时候会报错!!!!
看一下下面函数式编程的例子:
运行结果:
231
注意:接口中的默认方法和静态方法并不会影响函数式接口的规定,可以任意使用,但是普通方法只能有一个
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
注意:接口中的默认方法和静态方法并不会影响函数式接口的规定,可以任意使用,但是普通方法只能有一个
相关文章推荐
- java实体类实现序列化的意义
- java 制作证书的工具keytool用法总结
- AOP 之 6.2 AOP的HelloWorld ——跟我学spring3
- Java_Annotation详解
- Java注解Annotation详解
- 安装JavaJDK,三步搞定。
- 对JAVA集合进行遍历删除时务必要用迭代器
- leetcode--Shortest Word Distance
- [转载]Java几款性能分析工具的对比
- Spring AOP Example – Advice
- 这几天在研究java中的内存分配问题,谈谈堆栈
- JAVA关于Fat Jar打包注意事项
- 在Eclipse中搭建Dagger和Dagger2使用环境
- java 日期加一天
- Spring Autowiring @Qualifier example
- java8新增特性(一)---Lambda表达式
- Spring Auto-Wiring Beans with @Autowired annotation
- Spring中控制器方法返回字符串的一些细节
- 解决JAVA关于JTable列名无法显示问题
- 小白的Spring学习之路