[英]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.