2011-07-09 83 views
0

嗨我遇到了以下代碼在Android的文檔中的代碼Grid viewJava語法<?>說明

gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

在這個什麼是<?>(添加爲計算器不允許沒有空間空間)指示/去做?

+1

這有什麼好做的了Android在這裏找到更多的信息。但是你應該添加'generics'標籤 –

回答

3

The <? >是泛型類型的通配符,這意味着AdapterView的泛型類型可以是任何東西。

更具體地說,在這種情況下,該方法的參數可能會收到絕對任何泛型類型的AdapterView。作爲一個說明,如果你想限制的泛型類型,你可以這樣做:擴展MyClass的

AdapterView<? extends myClass) 

這限制了泛型類型來myClass的或任何東西。

就像一張紙條:

AdapterView <?> and AdapterView<? extends Object> 

是相同的。

您可以在通配符部分

Java generics documentation

+0

所以基本上它用在我們不想指定對象的類型(需要像Collection或Vector中那樣)並且我們希望它是一般情況下的方法嗎? – footy

+0

@Footy是的,當你想允許你的參數是任何泛型而不限制它的時候使用它。如果你想限制它,你可以使用<?擴展myClass>,那麼它只會接受擴展或myClass的泛型。 –