Open codingWang opened 7 years ago
lambda如何适应java类型系统呢?每一个lambda对应一个用接口区分的给定类型。 所谓的功能性接口必须包含一个抽象方法的声明。这种类型的lambda表达式将匹配这个抽象方法。 因为default类型的方法不是抽象的,所以你可以自由的往功能性接口中添加default方法。
default
只要一个接口只包含一个抽象方法,那它就可以被用作lambda。 为了确保你的接口符合要求,你需要给接口加上@FunctionalInterface注解。 当你试图在接口中添加第二个抽象方法时编译器就会报错。 比如:
@FunctionalInterface
@FunctionalInterface interface Converter<F, T> { T convert(F from); }
Converter<String, Integer> converter = (from) -> Integer.valueOf(from); Integer converted = converter.convert("123"); System.out.println(converted);
FunctionalInterface是可以省略的!
FunctionalInterface
这种形式的博客搜索引擎很难检索[万能哭笑君]
怪不得看到你原来的博客很少更新内容了
笔记而已,自己忘了看看,不用被搜索引擎收录(^o^)/~
java 8 Functional Interface
lambda如何适应java类型系统呢?每一个lambda对应一个用接口区分的给定类型。 所谓的功能性接口必须包含一个抽象方法的声明。这种类型的lambda表达式将匹配这个抽象方法。 因为
default
类型的方法不是抽象的,所以你可以自由的往功能性接口中添加default
方法。只要一个接口只包含一个抽象方法,那它就可以被用作lambda。 为了确保你的接口符合要求,你需要给接口加上
@FunctionalInterface
注解。 当你试图在接口中添加第二个抽象方法时编译器就会报错。 比如:FunctionalInterface
是可以省略的!