1、問題描述
泛型類型不能明確地運用在執行時期類型的操作當中,例如:轉型、instance of 和 new。因為在運作時,所有參數的型別資訊都遺失了。
2、解決方法
/** * 泛型类型判断封装类 * @param <T> */ class GenericType<T>{ Class<?> classType; public GenericType(Class<?> type) { classType=type; } public boolean isInstance(Object object) { return classType.isInstance(object); } }
在main方法我們可以這樣呼叫:
GenericType<A> genericType=new GenericType<>(A.class); System.out.println("------------"); System.out.println(genericType.isInstance(new A())); System.out.println(genericType.isInstance(new B()));
我們透過記錄類型參數的Class對象,然後透過這個Class物件進行類型判斷。
以上是如何避免Java泛型擦除問題及解決方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!