2011-12-28 125 views
0

我使用此代碼顯示消息:傳遞代碼作爲參數

Common.getHandler().post(new Runnable(){ 
    public void run(){ 
     Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show(); 
    } 
}); 

常見的一類礦井,和getHandler()將返回一個活動創建的處理程序。這樣我可以從外面的活動叫Toast。 這是一個很好的方法,它工作正常,但我想知道是否有另一種方法使代碼變得更簡潔一些。

喜歡的東西:

Common.run({ 
    Toast.makeText(Common.getContext(), "Text...", Toast.LENGTH_SHORT).show(); 
}); 

而且run()方法應該作爲封裝內一個Runnable參數傳遞的代碼。

AFAIK這被稱爲閉包,它可能在Javascript中。

問候!

+2

你必須等待Java 8 – 2011-12-28 15:54:32

回答

2

這是關於你可以在Java中做的最好的。您只能傳遞對象(和標量),所以您必須創建一個實現Runnable的類,或者執行您現在正在執行的操作,即創建一個實現Runnable的匿名對象實例。

0

Java不是JavaScript。

你的提議是不可能的,因爲你不能輕易地傳遞方法和函數。頂部的代碼可以簡化爲(適當更改您的Common類):

Common.run(new Runnable() { 
    public void run() { 
     // your code 
    } 
} 
+0

當然,我想介紹一些自定義界面,但並沒有結束。感謝您指出。 – LordTwaroog 2011-12-28 17:55:14

0

Java沒有「獨立」關閉;通過匿名實現是最接近的傳真。

使其「更短」的唯一真正方法是創建一個具體的實現,並通過它 - 但只是在呼叫站點更短。