2011-07-09 60 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的泛型。 –