如果這是重複的道歉。以編程方式確定泛型類型
有什麼辦法可以確定一個類是什麼泛型?
即我想知道什麼是T
....
public void doSomething(SomeClass<T> thing)
{
Class<T> t = ???;
}
感謝頁。
如果這是重複的道歉。以編程方式確定泛型類型
有什麼辦法可以確定一個類是什麼泛型?
即我想知道什麼是T
....
public void doSomething(SomeClass<T> thing)
{
Class<T> t = ???;
}
感謝頁。
不在Java中。您也必須接受Class<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。
在運行時?沒有 - >查找類刪除,在編譯時更具體 – stacker 2010-12-14 22:22:27