2013-07-05 62 views
1

我非常困惑在當前條件下在java上選擇正確的變量。比如我有這樣的代碼:如何在java中選擇正確的變量?

A object1 = new A(){ 
    onUpdate(){ 
     B object2 = new B(){ 
      onStarted(){ 
       this.setColor(); 
      } 
     }; 
    } 
}; 

代碼唯一的例子描述我的問題。問題是

this.setColor(); 

「this」總是指向object2。我想「this」指向object1。我怎樣才能做到這一點?

+2

好問題,但什麼是需要編寫這樣的事情? –

+2

'對象'本身沒有'setColor'方法。你會想爲這個對象提供一些上下文。 – Makoto

+0

sory @Makoto,那只是示例代碼。我會編輯我的問題。 –

回答

4

只需撥打

setColor 

正確的方法將被調用給出這種方法只有在「父」類存在。

你也可以試試這個:

public class Test{ 
    public void setColor(){} 
    public class Test2{ 
     void onUpdate(){ 
      Test.this.setColor(); 
     } 
    }  
} 

Java文檔審查後一種解決方案here

3

你可以這樣做:

final A object1 = new A(){ 
    onUpdate(){ 
     B object2 = new B(){ 
      onStarted(){ 
       object1.setColor(); 
      } 
     }; 
    } 
}; 

因爲this裏面B這是正常的this指的B當前實例。

另請注意,爲此工作object1必須是final

+1

不,我有理由選擇「this」而不是object1。但感謝您的回覆,我有一個來自@William Morrisson –

+0

的正確答案嗎?請解釋。 – UmNyobe

+0

這不起作用。 setColor方法顯然沒有爲類Object定義。 –