List<String> srcList = new ArrayList<>();
srcList.add("a");
srcList.add("b");
srcList.add("c");
List<String> descList = new ArrayList<>(3);
descList.add("1");
descList.add("2");
descList.add("3");
// public static <T> void copy(List<? super T> dest, List<? extends T> src)
Collections.copy(descList, srcList);
for (String item: descList) {
System.out.println(item);
}
List<? super String> listC = new ArrayList<>();
listC.add("A");
listC.add("B");
listC.add("C");
Collections.copy(listC, srcList);
for (String item : listC) { System.out.println(item); }// complie error.
<? super T>
は、TまたはTのスーパークラスを意味します。 メソッドCollections.copy()
のパラメータdest
では、foreach
の作業を修正できます。 カスタムリストオブジェクトlistC
がこのリストの項目を取得できない理由Java?コレクションのスーパーTはなぜ正しい仕事をコピーする
ループの 'item'は必ずしも文字列である必要はないからです。また、 'String'のスーパークラスの1つのインスタンスでもあります。 –