2011-01-24 44 views
4

我正在定義一個回調函數,並想引用自身內部的回調函數。編譯器不喜歡這個,並聲稱引用該回調的變量未被初始化。下面的代碼:在Java中,我如何從內部引用一個匿名內部類?

final Runnable callback = new Runnable() { 
    public void run() { 
     if (someCondition()) { 
      doStuffWith(callback); // <<--- compiler says "the local variable callback may not be initialized" 
     } 
    } 
}; 
// Here callback is defined, and is certainly defined later after I actually do something with callback! 

顯然編譯器誤認爲的時候,我們到達內方法的回調定義。我如何告訴編譯器這段代碼是否正常,或者我如何編寫它來安撫編譯器?我沒有做太多的Java,所以我可能在這裏咆哮錯誤的樹。有沒有其他一些慣用的方法來做到這一點?這對我來說似乎是一個非常簡單的構造。

編輯:當然,這太簡單了。感謝所有快速解答!

回答

10

爲什麼不使用:

doStuffWith(this); 
1

您是否嘗試過使用關鍵字this

1

你可以使用的this代替callback

(剛剛試了一下,我的編譯器不抱怨自己的方式,但如果你使用this它does not:

final Runnable callback = new Runnable() { 
    public void run() { 
     if (something()) { 
      doStuffWith(this); 
     } 
    } 
};