3
我有這樣的代碼實例變量:呼叫當它的名字一樣的是參數變量
class Foo {
int x = 12;
public static void go(final int x) {
System.out.println(x);
}
}
的爭論最終x和實例x具有相同的名稱。如果我想在go()方法中使用它,考慮到它的名稱與參數變量相同,我將如何引用實例變量x = 12?
我有這樣的代碼實例變量:呼叫當它的名字一樣的是參數變量
class Foo {
int x = 12;
public static void go(final int x) {
System.out.println(x);
}
}
的爭論最終x和實例x具有相同的名稱。如果我想在go()方法中使用它,考慮到它的名稱與參數變量相同,我將如何引用實例變量x = 12?
this.x
指向實例變量。
爲了引用實例變量,您必須處於實例中:那麼您的方法不應該是static
。
你需要讓靜態的,以靜態的方法中使用它:
static int x = 12;
然後你就可以用類名對它的引用:
public static void go(final int x)
{
System.out.println(Foo.x);
}
或者或者,創建一個實例並在本地使用它:
int x = 12;
public static void go(final int x)
{
Foo f = new Foo();
System.out.println(f.x);
}
或者使用實例方法,並參考實例x
用關鍵字this
:
int x = 12;
public void go(final int x)
{
System.out.println(this.x);
}
你是第一個注意到的方法是靜態的。但你的回答仍然是錯誤的。在'static'方法中不可能使用'this'。 – jlordo
我打賭我的房子,該方法被OP標記爲'static',只是因爲它是從main()調用的,而不是真正的需要。 – moonwave99
這是可能的,你的回答是正確的。但是一開始並不清楚,也許你應該補充一點,他應該從他的方法簽名中除去'static'以使'this.x'工作。 – jlordo