2012-07-09 11 views
23

可能性の重複:
What does List<?> mean in java generics?
What does the question mark in Java generics' type parameter mean?ジェネリックス<?>は実際に何を意味しますか?

謝罪が、それは<?>を検索しようとして困難でした。

Javaジェネリックについてはどういう意味ですか?私は<A extends B><A super B>を理解していますが、これまでにこの疑問符を見たことはありません。

+0

「シンボルハウンド」 - http://www.symbolhoundで検索してみてください。co.jp/ –

答えて

35

<?>は、<? extends Object>の省略形であり、の無制限のワイルドカードとも呼ばれます。したがって、ジェネリックに任意のタイプのオブジェクトを指定することができます。

たとえば、Listクラスは、任意のリストにすることができるので、List<?>と宣言されています。


資源:

+0

は何ですか?なぜジェネリックを使用しているのですか?私は違いを生むためには良い答えだとは思わない。 ''は任意のタイプのオブジェクトを指定することもできるからです。 – UnKnown

8

そのwildcardタイプ。短いです? extends Object

あなたが知っているのは、Objectです。設定しようとすると、Objectのサブクラスになる可能性があるため、できません。

+5

'Class 'と 'Class'の違いは何ですか?なぜ 'Class'の代わりに' Class 'を使う必要がありますか? – ycomp

+1

@ycomp生のタイプは総称をオフにしています。例えば。マップ地図; map.entrySet()は 'Set 'ではなく' Map 'を使用し、entrySetは' Set > ' –

+0

です。その場合にObjectを使うのはなぜですか?ジェネリックを使用する利点は何ですか? – Davor

3

ワイルドカードです。あなたがコレクションを持っていて、そのコレクションのタイプが分からないと仮定すると、 "?"と表示されます。これは単にその型がわからないことを指定します。 詳細については、http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf を参照してください。

3

ワイルドカードGenericは「何か」です。 Objectから継承するものとして扱われます。 Javaのdocumentationから

:(?)

汎用コードでは、疑問符は、 は未知のタイプを表し、ワイルドカードと呼ばれます。ワイルドカードは、さまざまな状況で使用することができます:パラメータ、フィールド、またはローカル変数の型として。 を返します(より具体的には、より良いプログラミングの実施ですが、 )。このワイルドカードは、汎用メソッド呼び出しの型引数 、汎用クラスインスタンスの作成、またはスーパータイプの として決して使用されません。

たとえば、List<?>は、不明なタイプのオブジェクトを含むリストです。

関連する問題