誰かがこの一般的なベクトルVector<? super Object> list = ...
とそれをどこで使用するかを説明できますか?
4 に答える
と同じです
Vector<Object> list
通常、「?super Type」は、TypeTypeのスーパータイプを追加できることを意味します
オブジェクトはJavaの最高レベルであるため、スーパータイプはありません。スーパーは必要ありません
もしそうなら
Vector<? extends Object> list
その場合、Objectのサブクラスである任意のオブジェクトを追加できることを意味します。これはJavaのすべてのオブジェクトであるため、次のようになります。
Vector<Object> list
また、VectorではなくListを検討し、スレッドセーフにする場合は、Collections.synchronizedList(...)でラップします。
ここでは、未知のオブジェクトの下限を定義しています?
。したがって、には、のスーパークラスVector<? super Object
のみを含めることができます。しかし、スーパークラスがないので意味がありません。と同じように動作します。Object
Object
Object
Vector<Object>
このサンプルを参照してください。
これに対応するのは、を拡張する任意のオブジェクトを追加できる上限 です。Vector<? extends Object>
Object
Object
ジェネリック型がほとんどの場合なので、使用を避けることができるはずです。
<? super Object>
オブジェクトのスーパータイプがないため、ばかげていますが、許可されており、オブジェクトタイプのみで構成されています。http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html
Object
Objectには、Stringのような不変クラスでextendsを使用するのと同様のスーパータイプがないため、このようなリストにはタイプの要素のみを含めることができます。このようなコレクションには、Stringのみを含めることができます。