2013-05-17 25 views
2

我使用下面的代碼從this site如果OnItemClickListener是Android中的一個接口,我們如何基於它創建一個對象?

// Create a message handling object as an anonymous class. 
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { 
    public void onItemClick(AdapterView parent, View v, int position, long id) { 
     // Do something in response to the click 
    } 
}; 

listView.setOnItemClickListener(mMessageClickedHandler); 

現在它說:

可以響應通過實現AdapterView.OnItemClickListener界面點擊事件中的每一項的AdapterView

如果OnItemClickListener()是一個接口,那麼我們如何在上面的代碼中創建它的對象?這背後的概念是什麼?

+1

您應該真的瞭解一下Java編程語言。 – Luksprog

回答

1

我不太確定我是否會收到您的問題,但在您的示例中,mMessageClickedHandler是對象,而對象實現了OnItemClickListener.onItemClick方法。如果你來自C++世界,那麼你需要實現一個子類或類似的東西作爲一個獨立的實體,但在Java中,你可以像上面看到的那樣創建一個匿名子類(我希望這是一個正確的名稱)內聯代碼。

這不是一種我個人喜歡的技術,但它是如此普遍的Java成語,我只是順其自然!

0

您無法爲接口創建對象。匿名內部類允許您執行以下操作:

public interface MyInterface { 
public void myMethod() ; 
} 

MyInterface myIntfObj = new MyInterface() { 
    public void myMethod() { 

    } 
}; 

myIntfObj.myMethod(); 
+0

我認爲這是一個令人滿意的答案。因爲我們在這裏創建一個接口的內部類(這在java中是允許的),而且我們創建的這個類是匿名類,所以基本上它是一個定義方法的新類的界面.. –

+0

是..內部類是隱式實現接口提供抽象定義的接口.... :) – Akilan

相關問題