Geschachtelter generischer Java-Typ
Wieso muss man den generischen Typ verwendenMap<?, ? extends List<?>>
anstelle eines einfacherenMap<?, List<?>>
für den folgendentest()
Methode?
public static void main(String[] args) {
Map<Integer, List<String>> mappy =
new HashMap<Integer, List<String>>();
test(mappy);
}
public static void test(Map<?, ? extends List<?>> m) {}
// Doesn't compile
// public static void test(Map<?, List<?>> m) {}
Beachten Sie, dass das Folgende funktioniert und dass die drei Methoden sowieso denselben gelöschten Typ haben.
public static <E> void test(Map<?, List<E>> m) {}