(Java): Bu kod ile ana danDönüş tip I Bu genel fonksiyonu var
public static <T extends Number> T sum(List<T> list){
Number tot = 0;
for(Number n: list){
tot = tot.doubleValue() + n.doubleValue();
}
return (T)tot;
}
hatırlayın:
public static void main(String[] args) {
ArrayList<Integer> listInt = new ArrayList<>();
listInt.add(3);
listInt.add(5);
listInt.add(6);
listInt.add(8);
System.err.println("Sum: " + Calcolatrice.sum(listInt))
}
Bu nedenle (listInt tamsayılar, bir ArrayList olmak üzere) bekliyoruz işlev toplamı tarafından döndürülen değer T = Tamsayıdır ve bu durumda, Double'den Integer'e bir dönüşüm hatası verir. Sonuç türü, bunun yerine Çift'tir ve hiçbir hata atılmamıştır. Döküm (T) totunun istenen sonucu yoktur.
Sanırım Java, jenerik duruş aşamasını ele alıyor, ama birisi neden bu şekilde çalıştığını daha iyi açıklıyor?
[tür silme] (https://docs.oracle.com/javase/tutorial/java/generics/erasure.html) davranışı açıklayan terimdir .... –