1
在下面的代码中,为什么Java认为简单名称numCows
可能未被初始化?为什么使用限定符 - 这可以防止错误?Qualified在简单的名字在匿名类
import java.util.function.Function;
public class CowFarm {
private final int numCows;
public CowFarm(int numCows) {
this.numCows = numCows;
}
// Fails to compile
//
// CowFarm.java:12: error: variable numCows might not have been initialized
public final Function<Integer, Integer> MULTIPLY_COWS = (k -> numCows * 2);
// Works fine
public final Function<Integer, Integer> DIVIDE_COWS = (k -> CowFarm.this.numCows * 2);
}