2011-07-09 18 views
0

こんにちは、私はGrid viewのアンドロイドの文書に次のコードのコードを見つけることができました。この中Java構文<?>説明

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

<?>は(stackoverflowのよう追加のスペースがスペースなしで許可されていませんでした)/何をすべきかを示しているのでしょうか?

+1

ワイルドカードセクションでは、ここで追加の情報を見つけることができます。しかし、 'generics'タグ –

答えて

3

<? >はジェネリック型のワイルドカードです。つまり、AdapterViewのジェネリック型は何でも構いません。

より具体的には、この場合、メソッドのパラメータは、絶対的に任意のジェネリック型のAdapterViewを受け取ることがあります。 MyClassのを拡張

AdapterView<? extends myClass) 

これは、MyClassのにジェネリック型を制限し、または何か:あなたは、一般的なあなたができるタイプを制限したい場合は、ノートとして。ただ、ノートとして

AdapterView <?> and AdapterView<? extends Object> 

は同じです。

あなたは、これは、Androidとは何の関係もありません

Java generics documentation

+0

を追加する必要があります。基本的には、オブジェクトの型を指定したくない場合(CollectionやVectorのように必要な場合)、それを一般的なメソッドにしたいのですか? – footy

+0

@Footyはい、パラメータをまったく制限することなく任意のジェネリック型にする場合に使用します。これを制限したい場合は、<? myClass>を拡張すると、myClassであるか拡張されたジェネリックしか受け入れられません。 –