Kapan Java generics membutuhkan <? memanjang T> alih-alih <T> dan apakah ada kelemahan beralih?
Diberikan contoh berikut (menggunakan JUnit dengan pencocokan Hamcrest): Map<String, Class<? extends Serializable>> expected = null; Map<String, Class<java.util.Date>> result = null; assertThat(result, is(expected)); Ini tidak dikompilasi dengan assertThattanda tangan metode JUnit dari: public static <T> void assertThat(T actual, Matcher<T> matcher) Pesan kesalahan kompiler adalah: Error:Error:line (102)cannot find symbol method assertThat(java.util.Map<java.lang.String,java.lang.Class<java.util.Date>>, org.hamcrest.Matcher<java.util.Map<java.lang.String,java.lang.Class …