[英]How to get generic container class of a ParameterizedType in java
我發現的有關泛型類型的java反射的每個問題都在詢問獲取泛型類型的參數。 就我而言,我有一個ParameterizedType並想獲取Generic容器類。
例如,假設
ParameterizedTypeImpl.toString()
回報
java.util.List<test.Bar>
現在,我想獲取一個java.util.List類。
聽起來對您來說有點有線,但是我需要您假設它就是它!
所以我需要的是
Class cls = ((MagicCast)ParameterizedTypeImpl.mayBeAMagicHere()).someOtherMagic();
//Now cls is of type List
我能想到的唯一方法是使用subString或regex從ParameterizedTypeImpl.toString()中獲取java.util.List,然后使用class.forName獲取該類。 但是我不知道它有多便攜。 Java的某些版本是否可能對ParameterizedTypeImpl的toString具有其他實現?
有沒有比這更好的解決方案了?
謝謝。
getRawType
應該做的把戲嗎?
Class<?> theClass = (Class<?>) yourParameterizedType.getRawType();
強制轉換應該是安全的,因為文檔說返回的值是表示聲明此類型的類或接口的Type
對象 ,但是,不能保證:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.