Bu Koleksiyonları (bir kısmını) yöntemini kopya geçerli:Collections.copy'de genel alt tür ve joker karakterler nasıl çalışır?
public static <T> void copy(List<? super T> dst, List<? extends T> src) {
for (int i = 0; i < src.size(); i++) {
dst.set(i, src.get(i));
}
}
4 örnek çağrı vardır:
List<Object> objs = Arrays.<Object>asList(2, 3.14, "four");
List<Integer> ints = Arrays.asList(5, 6);
1. Collections.copy(objs, ints);
2. Collections.<Object>copy(objs, ints);
3. Collections.<Number>copy(objs, ints);
4. Collections.<Integer>copy(objs, ints);
Nasıl yukarıdaki arama çalışmaları? sadece aramaları zaman izin olarak
Biz de birkaç olası imzalar
1. public static <T> void copy(List<T> dst, List<T> src)
2. public static <T> void copy(List<T> dst, List<? extends T> src)
3. public static <T> void copy(List<? super T> dst, List<T> src)
4. public static <T> void copy(List<? super T> dst, List<? extends T> src)
Yukarıdaki örnek çağrıları için
ile yöntemini olduğuna dair karar,Bunlardan ilki, çok kısıtlayıcı hedef ve kaynağın tam olarak aynı türü var. (Understood). tür parametre tipi parametresi son imza her üç tür parametreleri-ie için çalışır
, Nesne Tamsayı
olduğu zaman üçüncü imza çalışırNesne olduğu zaman
ikinci imza işleri , Numara ve Tamsayı.
ikinci, üçüncü ve son imzalar da açıklayınız?
kalan üç örtülü tip parametreleri kullanabilirsiniz aramalar için eşdeğerdir, ancak açık tip parametreler için farklıdır.
Yukarıdaki ifadenin anlamı nedir?
bir de her zaman çalışır basit neden daha karmaşık bir imza için tercih "Ama burada 4 imza kullanmalıdır"? – newacct
@newacct. Diğer alternatiflerin açık tip argümanlarla çalışmadığını zaten açıklamıştım. Ve bu yöntemin açık tip argümanı olan veya olmayan çağrılacak olup olmadığını bilmiyorsunuz. –
* Doğru * açık tür bağımsız değişkeniniz varsa, açık tür bağımsız değişkenlerle çalışır. Bu imza ve bağımsız değişkenler için yanlış olan bir tür bağımsız değişken seçerseniz, bu imzanın sorunu değildir. – newacct