@FunctionalInterface
1、它的定义有要求
要求:有且仅有一个抽象方法。
2、它有什么用,作用就是耍酷 ?
@FunctionalInterface是什么?不要想太多,它就是一个接口。只不过是一个支持Lambda的函数接口罢了。
public class FunInterfaceTest {
public static void main(String[] args) {
/// 无参数的写法 BEGIN
public static void test(FunInterface funInterface){
funInterface.say();
}
// 新款(Lambda)耍酷的写法
FunInterfaceTest.test(() -> {
System.out.println("lambda");
});
// 老款接口的写法
FunInterfaceTest.test(new FunInterface() {
@Override
public void say() {
System.out.println("new obj");
}
});
// 利用@FunctionalInterface 注解(无参)
@FunctionalInterface
public interface FunInterface {
void say();
}
}
public class FunInterfaceTest2 {
public static void main(String[] args) {
/// 有参数的写法 BEGIN
public static void test2(FunInterface2 funInterface){
funInterface.say("跑跑");
}
FunInterfaceTest.test2(msg -> {
System.out.println("lambda Fun2 "+msg);
return "lambda Fun2 "+msg;
});
FunInterfaceTest.test2(new FunInterface2() {
@Override
public String say(String msg) {
System.out.println("new Obj Fun2 "+ msg);
return "new Obj Fun2 "+ msg;
}
});
}
// 利用@FunctionalInterface 注解(有参)
@FunctionalInterface
public interface FunInterface2 {
String say(String msg);
}
}