簡體   English   中英

使用Java在運行時確定通用類型參數

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

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