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> {}