如何在本地内部类中访问局部变量有一个字段名称,如本地变量的名称

时间:2015-02-03 07:16:13

标签: java

如何访问本地变量?

void do1() {

    final int i = 1; // (*)

    class A {
        int i = 2;
        void do2() {
            //how to access local variable i (*) ?
        }
    }
}

2 个答案:

答案 0 :(得分:0)

你不能被类变量所遮蔽。克服它的最简单方法是重命名其中一个变量。

答案 1 :(得分:0)

你有几个选择:

将外部i值传递给A

class Main {
    public static void main(String[] args) {
        new Main().do1();
    }

    void do1() {

        final int i = 1; // (*)

        class A {
            A(int outerI) {
                this.outerI = outerI;
            }

            private int outerI;
            int i = 2;
            void do2() {
                System.out.println(outerI); // I want 1 here.
            }
        }

        new A(i).do2();
    }
}

或者使用合理的变量名称:

class Main {
    public static void main(String[] args) {
        new Main().do1();
    }

    void do1() {

        final int i = 1; // (*)

        class A {
            int j = 2;
            void do2() {
                System.out.println(i);
            }
        }

        new A().do2();
    }
}