【发布时间】:2019-01-29 01:52:45
【问题描述】:
我对这段代码有点困惑。为什么不编译?
@FunctionalInterface
public interface Inter {
BigDecimal method (BigDecimal param);
}
public class Main {
public static void main {
Function<BigDecimal, BigDecimal> func = param -> BigDecimal.ZERO;
Inter i1 = param -> BigDecimal.ZERO; // compile
Inter i2 = func; // not compile
}
}
【问题讨论】:
-
@CommonMan 它不是那个的副本。
-
@DodgyCodeException,由于
Lambda expression's parameter func cannot redeclare another local variable defined in an enclosing scope.,Op无法编译最后一行,链接stackoverflow.com/questions/22773003/…中提到了上述错误的答案,所以它是重复的,不是吗? -
@CommonMan 不,这不是因为“Lambda 表达式的参数 func 无法重新声明在封闭范围内定义的另一个局部变量。”
func不是 lambda 表达式参数。