簡體   English   中英

如何從內部類方法訪問局部變量?

[英]How can I access to local variable from inner class method?

我無法從內部類方法訪問var變量。 但是java正在訪問類變量而不是局部變量。 如何從內部類方法訪問局部變量而不是類變量?

class Foo {
    void test() {
        int var = 3;

        class Inner {
            int var = 1;

            void print_var_of_test() {
                System.out.println(var); // this line prints 1 why ?
                // I want this line to print var of test (3) function.
            }
        }
    }
}

如果內部類已經定義了具有相同名稱的變量,則無法從內部類訪問外部類的方法中定義的局部變量。
您可以使用不同的名稱來區分它們。

作為保持相同變量名稱的解決方法,您可以更改print_var_of_test()的簽名以接受int
這樣,在內部類之外,您可以在調用方法時傳遞int var變量。

class Foo {

  void test() {
    int var = 3;

    class Inner {
        int var = 1;

        void print_var_of_test(int var) {
          System.out.println("outer var=" + var);
          System.out.println("inner var=" + this.var);
        }
    }

    Inner inner = new Inner();
    inner.print_var_of_test(var);
  }

}

您可以通過為局部變量或內部類變量選擇另一個名稱來實現。

由於內部類和方法變量是在同一源方法中定義的,因此您應始終能夠更改其中一個。 從來沒有一種情況下你沒有權限/權限/能力來改變一個而不是另一個。

如果要將內部類var命名為varInner,如果要將它與原始類進行比較,那該怎么辦?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM