[英]Determine generic type parameters at run-time in Java
class Json<T>
{
@SerializedName( "T's type here" )
private final ArrayList<T> _bucket = new ArrayList<T>( 5 );
...
}
我想知道如何(如果可能)在運行時確定類的通用參數。 從我讀過的內容來看,泛型類型的子類是可行的,但我還無法找到如何使用類型本身。 這些鏈接中有一些不錯的信息,但是我不確定這是我要找的東西。
http://blog.xebia.com/2009/02/07/acessing-generic-types-at-runtime-in-java www.artima.com/weblogs/viewpost.jsp?thread=208860
我最終要完成的工作是讓Gson序列化上面的'_bucket'變量,作為類型'T'的類名。
如果有人能指出我正確的方向,我將不勝感激。
在給定的示例中,泛型類型在運行時不可用。 泛型類型信息只有在編譯時指定時才可以通過反射獲得,例如,如果定義了子類SomeTypeJson extends Json<SomeType>
。
作為一個笨拙,您可以通過檢查List
的內容猜測通用類型,並通過反射找到最特定的通用超類。
通常,您可以將此類型子類化以提供具體類型,然后處理程序包應能夠正確解析類型。 另外,許多軟件包都有某種類型引用的概念(“類型令牌”),它僅使用匿名類來提供類型信息,以便反序列化程序可以正確地推斷出預期的類型。 我不記得Gson使用的是哪個類,它應該有類似的可用內容。
如果您僅有的是運行時實例,那么您將很不走運,除了擁有非空List並檢查其類型(按照建議)外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.