12

これがどのようにコンパイルされ、どのように機能するかを誰かが説明できますか?

List<? super String> list = new ArrayList<Object>();

私が理解しているように、これの実装は、文字列リストまたは文字列をスーパークラスとして持つオブジェクトのリストのいずれかである必要がありますか? 私は何かを逃しましたか?

4

3 に答える 3

25

いいえ(つまり、はい、何かを逃しました:-)。(それ自体を含む)のスーパークラス<? super String>ある任意のクラスです。(この場合、他の適切なクラスは。)のみです。StringStringObject

あなたが説明したのは次のようになります(この特定のケースでは、これはそのままでは<? extends String>あまり役に立たないため、サブクラスを含めることはできません)。Stringfinal

于 2012-05-24T12:40:29.813 に答える
4

<? super String>Stringおよび任意のスーパークラスを受け入れます。

混同しないでください:

<? extends String>Stringと任意のサブクラスString(is以降はありません)を受け入れますfinal

于 2012-05-24T12:41:14.243 に答える
0

Stringisであるためfinal、他のクラスのスーパー クラスになることはできません。List<? super String>のスーパークラスである任意の型を意味しますString。実際、(実際には任意のクラスの)Objectスーパー クラスです。String

于 2012-05-24T12:42:19.873 に答える