为什么我们不能在 lambda 表达式中使用默认方法?
2022-08-31 21:02:42
我正在阅读Java 8上的本教程,其中作者展示了代码:
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
然后说
无法从 lambda 表达式中访问默认方法。以下代码无法编译:
Formula formula = (a) -> sqrt( a * 100);
但他没有解释为什么这是不可能的。我运行了代码,它给出了一个错误,
不兼容的类型:公式不是功能接口
那么为什么这是不可能的,或者错误的含义是什么?该接口满足具有一个抽象方法的功能接口的要求。