函数式接口和方法引用
1.函数式接口概述
只有一个抽象方法(default不算)的接口称为函数式接口.通常有注解:@FunctionalInterface进行标识.
2.方法引用
只有在lambda表达式总发现方法体只有一行代码就可以简化写法;
例如: lambda的三层简化写法
new ArrayList<String>().stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.valueOf(s);
}
}).forEach(new Consumer<Integer>() {
@Override
public void accept(Integer i) {
System.out.println(i);
}
});
new ArrayList<String>().stream().map(s -> Integer.valueOf(s)).forEach(i -> System.out.println(i));
new ArrayList<String>().stream().map(Integer::valueOf).forEach(System.out::println)
//上面三个等效
可以看到格式就是类::方法
- 构造器方法也可以这么使用格式是类名::new