Do czego mogą być przydatne typy generyczne z dzikimi kartami?
Do czego mogą być przydatne typy generyczne z dzikimi kartami?
Dzikie karty w typach generycznych mogą wystąpić w następujących kontekstach:
Ostatnie dwie konstrukcje umożliwiają zdefiniowanie ograniczeń typów (boundaries) - ograniczeniem jest tu typ T.
Stanowią sposób na wprowadzenie polimorfizmu dla typów generycznych.
Przykłady:
List<?> I = new Vector<String>(); Set<? super Integer> s = new HashSet<Number>(); Map<? extends Number, ? extends Number> m = new HashMap<Integer, Float>();
Powyższe konstrukcje umożliwiają także określenie zależności pomiędzy dwoma typami generycznymi wybranej metody.
Przykładowo w klasie java.util.Collections metoda sort zdefiniowana jest następująco:
public static <T> void sort(List<T> list, Comparator<? super T> c)