Java の汎用ワイルドカードについていくつか質問があります。
List<? extends T>
との違いは何ですかList<? super T>
?制限付きワイルドカードと制限なしワイルドカードとは何ですか?
ベストアンサー1
最初の質問では、<? extends T>
と が<? super T>
有界ワイルドカードの例です。無界ワイルドカードは のように見え<?>
、基本的には を意味します<? extends Object>
。これは、ジェネリックが任意の型である可能性があることを意味します。有界ワイルドカード(<? extends T>
または<? super T>
)は、型に次のどちらかの制限を課します。伸ばす特定の型 (<? extends T>
は上限と呼ばれます)、または特定の型の祖先である必要があります (<? super T>
は下限と呼ばれます)。
Javaチュートリアルにはジェネリックに関する非常に良い説明が記事の中にある。ワイルドカードそしてワイルドカードでもっと楽しく。