簡體   English   中英

查找對象參數化注釋的運行時classtype

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

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