簡體   English   中英

如何在Java中獲取ParameterizedType的通用容器類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM