public class MyClass {
int x=9;
public static void main(String args[]) {
MyClass myClass = new MyClass();
myClass.test();
}
public void test(){
int x=10;
class InnerClass{
int x = 11;
void print(){
int x = 12;
System.out.println(x);
System.out.println(this.x);
System.out.println(MyClass.this.x);
System.out.println("MyClass => test() => x :" + "?");
}
}
InnerClass innerClass = new InnerClass();
innerClass.print();
}
}
如何在 InnerClass print()
方法中调用 MyClass test()
方法局部变量 x。我可以在最后的 System.out.println()
方法中写什么来代替 ? 以获得 test()
的值 < em>x.
最佳答案
不幸的是,在 Java
中你不能。
访问 MyClass::test
中的 x
的唯一方法是将内部类和内部类方法中的变量重命名为其他名称。
虽然没有必要重命名外部 class
字段 x
因为 InnerClass::print
会考虑最内部的变量范围。
虽然此代码段用于演示目的,但更好的做法是为每个变量使用不同且更重要的名称。
关于java - 如何访问本地内部类中的外部类方法局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48801534/