不能在内部 class 内部使用局部变量。那么为什么这段代码有效呢?
A local variable can't be used inside an inner class. So why does this code work?
我有一个学生正在准备 Java 7 OCP 考试,他向我提出了这个问题。他和我都明白局部变量不能在方法的内部 class 中使用,除非它是最终的,但他向我展示了以下运行良好的代码:
public class TestC195 {
public static void main(String[] args) {
TestC195 myObject = new TestC195();
myObject.doStuff();
}
private String x = "Outer 2";
void doStuff() {
String z = "local";
class myInner {
public void seeOuter() {
System.out.println("outer: " + x);
System.out.println("outer: " + z);
}
}
myInner in = new myInner();
in.seeOuter();
}
}
输出为:
outer: Outer 2
outer: local
那么我们都缺少什么?
如果您使用 java 8 进行编译,那是因为它实际上是最终的 link here
我有一个学生正在准备 Java 7 OCP 考试,他向我提出了这个问题。他和我都明白局部变量不能在方法的内部 class 中使用,除非它是最终的,但他向我展示了以下运行良好的代码:
public class TestC195 {
public static void main(String[] args) {
TestC195 myObject = new TestC195();
myObject.doStuff();
}
private String x = "Outer 2";
void doStuff() {
String z = "local";
class myInner {
public void seeOuter() {
System.out.println("outer: " + x);
System.out.println("outer: " + z);
}
}
myInner in = new myInner();
in.seeOuter();
}
}
输出为:
outer: Outer 2
outer: local
那么我们都缺少什么?
如果您使用 java 8 进行编译,那是因为它实际上是最终的 link here