抽象类作为功能接口
2022-09-01 01:38:06
在java 8中,只有一个抽象方法的抽象类不是函数接口(JSR 335)。
这是一个功能接口:interface
public interface MyFunctionalInterface {
public abstract void myAbstractMethod();
public default void method() {
myAbstractMethod();
}
}
但这不是:abstract class
public abstract class MyFunctionalAbstractClass {
public abstract void myAbstractMethod();
public void method() {
myAbstractMethod();
}
}
所以我不能使用抽象类作为lambda表达式和方法引用的目标。
public class Lambdas {
public static void main(String[] args) {
MyFunctionalAbstractClass functionalAbstractClass = () -> {};
}
}
编译错误为:。The target type of this expression must be a functional interface
为什么语言设计者施加了这个限制?