如果这是重复的道歉。以编程方式确定泛型类型
有什么办法可以确定一个类是什么泛型?
即我想知道什么是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