2012-12-17 29 views
3

我有這樣的代碼實例變量:呼叫當它的名字一樣的是參數變量

class Foo { 
int x = 12; 

public static void go(final int x) { 

    System.out.println(x); 

} 
} 

的爭論最終x和實例x具有相同的名稱。如果我想在go()方法中使用它,考慮到它的名稱與參數變量相同,我將如何引用實例變量x = 12?

回答

5

this.x指向實例變量。

爲了引用實例變量,您必須處於實例中:那麼您的方法不應該是static

+1

你是第一個注意到的方法是靜態的。但你的回答仍然是錯誤的。在'static'方法中不可能使用'this'。 – jlordo

+2

我打賭我的房子,該方法被OP標記爲'static',只是因爲它是從main()調用的,而不是真正的需要。 – moonwave99

+1

這是可能的,你的回答是正確的。但是一開始並不清楚,也許你應該補充一點,他應該從他的方法簽名中除去'static'以使'this.x'工作。 – jlordo

6

你需要讓靜態的,以靜態的方法中使用它:

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); 
}