1

コレクションでワイルド カードを使用すると問題が発生します。これは、 Javaジェネリックとワイルドカードの質問に似ていますが、私が見つけた回答は混乱しています。アドバイスいただけますか?

問題: クラスとそのサブタイプを持つコレクションを使用したいと考えています。ドキュメントに基づいて、使用する必要があると予想していましたが、それでは<? extends myclass>機能しませんが、使用しないとスムーズに機能します。なぜこのようになっているのでしょうか。正反対のはずです。<? super myclass>スーパークラスの場合と同じですか?

正しい例:

    List<Number> nl = new ArrayList<>();
    nl.add(new Integer(2));
    System.out.println("===> List<Number>.add (new Integer(2)) = " + nl.get(0));

間違った例:

List<? extends Number> nl = new ArrayList<>();
nl.add(new Integer(2));
System.out.println("===> List<Number>.add (new Integer(2)) = " + nl.get(0));

アドバイスをいただければ幸いです。どうもありがとう、タマス

4

0 に答える 0