Java 以编程方式确定泛型类型
如果这是一个重复的道歉 有没有办法确定类的泛型类型 我想知道什么是Java 以编程方式确定泛型类型,java,generics,Java,Generics,如果这是一个重复的道歉 有没有办法确定类的泛型类型 我想知道什么是T public void doSomething(SomeClass<T> thing) { Class<T> t = ???; } public void doSomething(某类事物) { 类t=???; } 谢谢,p.不是用Java。您还必须接受调用方必须提供的Class参数。(如果愿意,您可以在构造函数中执行此操作,以便所有类方法都可以使用类引用。)这是一种常用的方法,用于确定运行
T
public void doSomething(SomeClass<T> thing)
{
Class<T> t = ???;
}
public void doSomething(某类事物)
{
类t=???;
}
谢谢,p.不是用Java。您还必须接受调用方必须提供的
Class
参数。(如果愿意,您可以在构造函数中执行此操作,以便所有类方法都可以使用类引用。)这是一种常用的方法,用于确定运行时T
引用的内容,由于Java实现泛型的方式,这是不可用的。只要T由类定义参数化,您就可以这样做。例:
接口IContainer{
公开无效的东西(某类东西){
类t=TypeResolver.resolveArgument(getClass(),IContainer.Class);
}
}
类ConatinerImpl实现IContainer{}
有关在运行时使用TypeResolver的更多信息,请参阅。?Nope->查找类擦除,在编译时更具体
interface IContainer<T> {
public void doSomething(SomeClass<T> thing) {
Class<?> t = TypeResolver.resolveArgument(getClass(), IContainer.class);
}
}
class ConatinerImpl implements IContainer<String> {}