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) {}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage