Tak więc czytałem na lekach generycznych, aby ponownie zapoznać się z pojęciami, szczególnie w przypadku symboli wieloznacznych, ponieważ rzadko je używam lub napotykam na nie. Z lektury, którą zrobiłem, nie rozumiem, dlaczego używają symboli wieloznacznych. Jednym z przykładów, który napotykam, jest następujący.Jawne generics: wildcards
void printCollection(Collection<?> c) {
for (Object o : c){
System.out.println(o);
}
}
Dlaczego nie piszesz to jako:
<T> void printCollection(Collection<T> c) {
for(T o : c) {
System.out.println(o);
}
}
Kolejny przykład ze strony internetowej Oracle:
public static double sumOfList(List<? extends Number> list) {
double s = 0.0;
for (Number n : list)
s += n.doubleValue();
return s;
}
Dlaczego nie jest to napisane jako
public static <T extends Number> double sumOfList(List<T> list) {
double s = 0.0;
for (Number n : list)
s += n.doubleValue();
return s;
}
Am Brakuje mi czegoś?
Możliwe [duplikat] (http://stackoverflow.com/questions/10943137/difference-between-generic-type-and-wildcard-type) – Jayamohan
@Jayamohan Nie zgadzam się. –