[英]Find runtime classtype of an object's parametrized annotation
我想檢索在對象的參數化標記接口上找到的泛型類型的實際類。 這甚至可能嗎?
標記界面:
public interface MarkerInterface<T> {}
我想要的方法:
public class findClassForParametrizedMarkerInterface(MarkerInterface<T> markedObjectThatCouldExtendSomeRandomClass){
//How to retrieve the class T, or it's name?
}
對於那些希望知道我為什么要這樣做的人:我有一些dto jpa實體用於一些重jpa實體。 我想創建一個通用服務,為所提供的dto檢索正確的完整實體spring數據jpa存儲庫。 dto有一個標記接口,它將完整的實體類指定為參數化泛型類型。
編輯: 在運行時可以在Get泛型類中找到一個很好的討論。 最簡單的解決方案是在實例化對象時傳遞對類的引用。 保持對此類的引用以在需要時返回。 這是因為Java在運行時沒有保留泛型。 如果要使用詳細反射API來檢索通用信息,則可以使用元數據。
在對象本身上使用
getClass()
。
public final類getClass()返回此Object的運行時類。
返回的Class對象是由所表示的類的靜態同步方法鎖定的對象。
實際結果類型是Class,其中| X |
是調用getClass的表達式的靜態類型的擦除。
例如,此代碼片段中不需要強制轉換:
數n = 0;
類c = n.getClass();
返回:表示此對象的運行時類的Class對象。
另請參閱:文字,Java™語言規范的第15.8.2節。
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#getClass()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.