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