
大家好。FunctionInterface和Interface之间有什么区别,为什么我们需要声明@FunctionalInterface,如果在包java.util.function的实现中有接口的话;
发布于 2021-02-15 07:40:17
FunctionalInterface是一个具有以下功能的接口:
因此,编译器将能够找到对应于您将要传递的lambda的方法。
例如;
@FunctionalInterface
public interface Supplier<T> {
T get();
default String greet() {
return "Hello, World ";
}
default String greet2() {
return "Hello, World 2";
}
}因此,java将很容易地找到正确的(抽象)方法,因为is是惟一的。
Supplier<Car> fordCarProvider = () -> new Car("Ford", 1500, 4, 43000);
Supplier<Car> bmwCarProvider = () -> new Car("BMW", 1500, 4, 83000);
System.out.println(fordCarProvider.get());
System.out.println(bmwCarProvider.get());但是,如果您有几个抽象方法,那么它就不再是FunctionalInterface了。因为可能会出现歧义。
// No more @FunctionalInterface
public interface Supplier<T> {
T get();
String greet();
default String greet2() {
return "Hello, World 2";
}
}发布于 2021-02-15 06:56:08
Java中的@FunctionalInteface是只有一个方法的interface。
https://stackoverflow.com/questions/66203627
复制相似问题