簡體   English   中英

以編程方式確定泛型

[英]programmatically determine generic type

抱歉,如果這是重復的。

有什么方法可以確定類是什么泛型?

即我想知道T是什么...

public void doSomething(SomeClass<T> thing)
{
    Class<T> t = ???;
}

謝謝,第

不是用Java。 您還必須接受Class<T>的參數,調用者必須提供該參數。 (您可以根據需要在構造函數中執行此操作,以便所有類方法都可以使用該類引用。)這是一種常用的技巧,可以確定T在運行時所指的是什么,否則由於Java實現泛型的方式。

只要T由類定義參數化, 就可以執行此操作。 例如:

interface IContainer<T> {
  public void doSomething(SomeClass<T> thing) {
    Class<?> t = TypeResolver.resolveArgument(getClass(), IContainer.class);
  }
}

class ConatinerImpl implements IContainer<String> {}

有關使用TypeResolver的更多信息,請參見TypeTools。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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