1.用在什么地方,有什么要求
-用在接口上
-接口内除object的public方法外,只有一个抽象方法
@FunctionalInterface
public interface Java8Interface {
static void staticMethod(){//静态方法
System.out.println("staticMethod");
};
default void defaultMethod(){//默认方法
System.out.println("defaultMethod");
};
void abstractMethod(int a, int b);//抽象方法
boolean equals(Object obj);//Object的public,也是抽象的
}
2.用这个有什么用 -使用lambda表达式实例化该接口,很方便
当方法的参数是带@FunctionInterface的接口时,在调用该方法时可以使用lambda表达式实例化该接口,达到简化写法的目的
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
test((a,b) -> {
System.out.println("abstractMethod"+a+""+b);
},2 , 5);
}
public static void test(Java8Interface java8Interface, int a, int b){
java8Interface.abstractMethod(a,b);
}
}