我对内部类和lambda表达有些困惑,我试着问一个问题,然后又出现了另一个疑问,并且可能更好地发布另一个问题,而不是评论前一个问题.
直截了当:我知道(谢谢Jon)这样的事情无法编译
public class Main {
public static void main(String[] args) {
One one = new One();
F f = new F(){ //1
public void foo(){one.bar();} //compilation error
};
one = new One();
}
}
class One { void bar() {} }
interface F { void foo(); }
Run Code Online (Sandbox Code Playgroud)
由于Java如何管理闭包,因为one不是[有效]最终等等.
但是,这怎么允许的呢?
public class Main {
public static void main(String[] args) {
One one = new One();
F f = one::bar; //2
one = …Run Code Online (Sandbox Code Playgroud)