これがどのようにコンパイルされ、どのように機能するかを誰かが説明できますか?
List<? super String> list = new ArrayList<Object>();
私が理解しているように、これの実装は、文字列リストまたは文字列をスーパークラスとして持つオブジェクトのリストのいずれかである必要がありますか? 私は何かを逃しましたか?
いいえ(つまり、はい、何かを逃しました:-)。(それ自体を含む)のスーパークラスで<? super String>
ある任意のクラスです。(この場合、他の適切なクラスは。)のみです。String
String
Object
あなたが説明したのは次のようになります(この特定のケースでは、これはそのままでは<? extends String>
あまり役に立たないため、サブクラスを含めることはできません)。String
final
<? super String>
String
および任意のスーパークラスを受け入れます。
混同しないでください:
<? extends String>
String
と任意のサブクラスString
(is以降はありません)を受け入れますfinal
。
String
isであるためfinal
、他のクラスのスーパー クラスになることはできません。List<? super String>
のスーパークラスである任意の型を意味しますString
。実際、(実際には任意のクラスの)Object
スーパー クラスです。String