使用下面的匿名类时,变量
但是当我使用下面的lambda表达式相同的代码时,发生了异常:
这里可能存在什么问题呢?要知道,Lambda表达式只是实现匿名类的一种简写方式。
x
可以正常调用。interface Age {
int x = 21;
void getAge();
}
class AnonymousDemo {
public static void main(String[] args) {
Age oj1 = new Age() {
@Override
public void getAge() {
// printing age
System.out.print("Age is "+x);
}
};
oj1.getAge();
}
}
但是当我使用下面的lambda表达式相同的代码时,发生了异常:
interface Age {
int x = 21;
void getAge();
}
class AnonymousDemo {
public static void main(String[] args) {
Age oj1 = () -> { System.out.print("Age is "+x); };
oj1.getAge();
}
}
这里可能存在什么问题呢?要知道,Lambda表达式只是实现匿名类的一种简写方式。
public
、static
和final
”,详见JLS § 9.3。 - MC Emperor