Java 如何确定泛型的类?

我正在创建一个通用类,并且需要使用一种方法来了解当前使用的通用类型的Class。原因是我调用的方法之一期望将此作为参数。

例:

public class MyGenericClass<T> {

public void doSomething() {

// Snip...

// Call to a 3rd party lib

T bean = (T)someObject.create(T.class);

// Snip...

}

}

显然,上面的示例不起作用,并导致以下错误:类型参数T的非法类文字。

我的问题是:有人知道这方面有很好的选择或解决方法吗?

回答:

仍然存在相同的问题:常规信息在运行时被删除,无法恢复。一种解决方法是在静态方法的参数中传递T类:

public class MyGenericClass<T> {

private final Class<T> clazz;

public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {

return new MyGenericClass<U>(clazz);

}

protected MyGenericClass(Class<T> clazz) {

this.clazz = clazz;

}

public void doSomething() {

T instance = clazz.newInstance();

}

}

很难看,但是可以用。

以上是 Java 如何确定泛型的类? 的全部内容, 来源链接: utcz.com/qa/419209.html

回到顶部