鑑於這種代碼:有沒有一種乾淨的方式將泛型類的類賦值給變量?
List<Integer> ints = new ArrayList<Integer>();
// Type mismatch:
// cannot convert from Class<capture#1-of ? extends List> to Class<List<Integer>>
Class<List<Integer>> typeTry1 = ints.getClass();
// Type safety:
// Unchecked cast from Class<capture#2-of ? extends List> to Class<List<Integer>>
Class<List<Integer>> typeTry2 = (Class<List<Integer>>) ints.getClass();
// List is a raw type. References to generic type List<E> should be parameterized
Class<? extends List> typeTry3 = ints.getClass();
是否有一種方式來獲得的List<Integer>
的Class
沒有錯誤或警告?我可以很容易地禁止警告,但是如果Java要求我取消這個有效代碼的警告,那麼我很disappoint。
另一方面,如果警告抑制是唯一的方法,最安全的壓制是什麼?
顯然沒有警告的免費方式,因爲擦除。 http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens – user845279
在Class對象引用中使用具體泛型類型實際上沒有意義,因爲該信息不是在被引用的對象中,所以在我的意見'類<?擴展List>'或'Class <?擴展列表>>'是變量的最佳類型。我很驚訝,雖然我找不到對通配目標類型沒有警告的演員......然而,由於Class對象主要用於反射,因此您可能會很好地使用'Class >',該工作沒有警告 –