J. Bloch'un etkili Java'sını okuyorum ve şimdi diziler ve listeler bölümündeyim. İşte o sağlanan kontrolsüz döküm örneğidir:Denetlenmemiş yayınla ilgili sorun nedir?
interface Function<T> {
T apply(T arg1, T arg2);
}
public class Main{
public static void main(String[] args){
Function<String> f = null;
List<String> str = Arrays.asList("asd");
//staff
reduce(str, f, ""); //E's deduced to String. Where is type-unsafe?
}
static <E> E reduce(List<E> list, Function<E> f, E initVal) {
E[] snapshot = (E[]) list.toArray(); // Unchecked cast
E result = initVal;
for (E e : snapshot)
result = f.apply(result, e);
return result;
}
}
O yöntem güvenli tip değildir ve kolayca ClassCastException
alabilirsiniz söyledi. Ama nasıl göremiyorum. Tip-güvensiz olan, E
tip değişkeni her zaman uygun türe indirgenecektir, bu yüzden sınıf-cast-exeption hakkında endişelenmiyoruz.
ClassCastException
atma ile ilgili bir örnek vermediniz mi?
__Ben bu kadarını bir ClassCastException atamadım, ne de yapabilirim, ama J. Bloch, bir tane almak için kolayca değiştirilebileceğini söyledi. –