我有以下的靜態方法:創建於return語句一個匿名類
public static <E> Tree<E> leaf(E leaf) {
return new Tree<E>() {
@Override
public <R> R accept(TreeVisitor<E, R> visitor) {
return visitor.visit(leaf); //1 Ok in Java 8, fail in Java < 8
}
};
}
當我用Java開發8它;它編譯罰款,現在當我不得不搬回到Java 7 //1
導致編譯錯誤的行:
Cannot refer to the non-final local variable leaf defined in an enclosing scope
爲什麼在Java中8允許指非最終變量?