java为什么匿名内部类中的这个表示lambda中的不同对象
作为read
Lambda expression eliminates the need of anonymous class and gives a very simple yet powerful functional programming capability to Java.
据我所知,lambda是用单个方法替换内部类,以消除代码的庞大性
public class Main {
interface Foo {
int x = 20;
void bar();
}
public static void main(String[] args) {
Main app = new Main();
app.start();
}
int x = 10;
public void start()
{
Main test = new Main();
test.test(new Foo()
{
@Override
public void bar() {
System.out.println("Inner Class X= " + this.x);
}
});
test.test(() -> System.out.println("Lambda X= " + this.x));
}
public void test(Foo foo) {
foo.bar();
}
}
我得到的结果是
Inner Class X = 20
Lambda X = 10
我所期望的是
Inner Class X = 20
Lambda X = 20
# 1 楼答案
在第一个实现中,通过执行
new Foo()
来创建内部类的对象。所以在这个实现中this
指的是这个对象在lambda实现中,没有
this
引用封闭类的对象