箭头函数
如果一个接口只有一个抽象方法,那么这个接口也称之为函数式接口。可以使用@FunctionalInterface
注解标识。
@FunctionalInterface
public interface Function {
int plus(int i,int j);
}
当我们使用函数式接口去构造内部类时,我们很简单的表示:
public class Client {
public static void test(Function function){
System.out.println(function.plus(1, 2));
}
public static void main(String[] args) {
// 这里我们使用了内部类
test(new Function() {
@Override
public int plus(int i, int j) {
return i + j;
}
});
}
}
这样写的话其实和抽象类没有什么区别,并不能体现出函数式接口的优越性
我们可以对之进行简化,
类名方法名全不要,这个结构分为两部分,第一部分,小括号包裹形参,类型也不要、第二部分 ->、第三部分是方法体
public class Client {
public static void test(Function function){
System.out.println(function.plus(1, 2));
}
public static void main(String[] args) {
// 这里我们使用了内部类
test((i,j)->{return i+j;});
}
}
只有一行的返回体的话我们甚至可以省略大括号
public class Client {
public static void test(Function function){
System.out.println(function.plus(1, 2));
}
public static void main(String[] args) {
// 这里我们使用了内部类
test((i,j)->return i+j);
}
}
版权声明:本文为weixin_43903639原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。