java - 如何访问本地内部类中的外部类方法局部变量?

标签 java inner-classes local-variables

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/

相关文章:

java - 交换数组中的第一个和最后一个值(JAVA)

祖 parent 上的 JavaFX addEventListener 内存泄漏

java - 局部变量整数数组默认为零

java - 在两个相对文本字段上使用 TextChanged 监听器

java - Intellij idea无法解析包含美元的类

Java 嵌套类无法识别其自身实例

java - 为什么我不能在方法本地内部类中使用访问说明符?

java - 如果我在内部类中明确引用 'this' 会怎样?

javascript - 在给定函数范围内使用变量而不传递

c - C 中的临时变量和局部变量有什么区别?