Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法。
@FunctionalInterface
是修饰函数式接口的,要求接口中的抽象方法只有一个,这个注解往往会和 lambda 表达式一起出现。
https://www.cnblogs.com/haixiang/p/11029639.html
@FunctionalInterface
public interface NoReturnMultiParam {
void method(int a, int b);
}
// ---------------------------------------------------------------------------------
NoReturnMultiParam noReturnMultiParam = (int a, int b) -> {
System.out.println("NoReturnMultiParam param:" + "{" + a +"," + + b +"}");
};
noReturnMultiParam.method(6, 8);
// ---------------------------------------------------------------------------------
NoReturnMultiParam lamdba1 = (a, b) -> {
System.out.println("简化参数类型");
};
lamdba1.method(1, 2);
// ---------------------------------------------------------------------------------
NoReturnMultiParam lambda3 = (a, b) -> println("只有一条语句则可以省略大括号");
lambda3.method();
@FunctionalInterface
public interface ReturnOneParam {
int method(int a);
}
// ---------------------------------------------------------------------------------
ReturnOneParam returnOneParam = (int a) -> {
System.out.print("Lambda");
return 1;
};
// ---------------------------------------------------------------------------------
ReturnOneParam returnOneParam = (a) -> {
System.out.print("省略类型");
return 1;
};
// ---------------------------------------------------------------------------------
ReturnOneParam returnOneParam = a -> {
System.out.print("如果只有一个参数则可以省略参数小括号");
return 1;
};
// ---------------------------------------------------------------------------------
System.out.print("只有return则可以省略return和大括号")
ReturnOneParam returnOneParam = a -> a + 3;
public class Exe1 {
public static void main(String[] args) {
ReturnOneParam lambda1 = a -> doubleNum(a);
System.out.println(lambda1.method(3));
// lambda2 引用了已经实现的 doubleNum 方法
ReturnOneParam lambda2 = Exe1::doubleNum;
System.out.println(lambda2.method(3));
Exe1 exe = new Exe1();
// lambda4 引用了已经实现的 addTwo 方法
ReturnOneParam lambda4 = exe::addTwo;
System.out.println(lambda4.method(2));
}
public static int doubleNum(int a) {
return a * 2;
}
public int addTwo(int a) {
return a + 2;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。