次のコード スニペットを理解できません。
List<? extends Number> intList = Collections.nCopies(5, new Integer(10));
List<Object> objList = new ArrayList<Object>();
for(int i = 0; i < 5; i++) {
objList.add(new Object());
}
Collections.copy(objList, intList);
System.out.println("The objList is: " + objList);
copy メソッドの宣言:
static <T> void copy(List<? super T> dest, List<? extends T> src);
List<Object> objList = new ArrayList<Object>();
by and objList.add(new Object());
lines Object が T と ? の両方を置き換えていることを理解しています。また、copy メソッドの宣言では、最初のパラメーターが T のスーパー クラスである必要があると規定されているためextends
、super
排他的節はそうですか? T は同じであってはなりません。有効なコードではないと思います。次のようになった可能性があります。
List<Integer> objList = new ArrayList<Integer>(); (but it gives compilation error.
では、このコードはどのように機能していますか? 説明していただけますか?