构造泛型对象时,可以从变量传递其类型吗?

时间:2014-12-24 13:26:05

标签: java generics

如果我有这样的通用类:

class SomeClass<T> { 
  public aFunction(T anArg) {
    // some implementation
  }
}

有没有办法使用Class类型的变量来实例化SomeClass?

我基本上希望能够做到这一点:

Class var = String.class; // just an example, obviously
SomeClass<?> anInstance = new SomeClass< var >();

或者有解决方法吗?

2 个答案:

答案 0 :(得分:1)

Java使用type erasure,因此在运行时泛型类型不知道它们的类型参数。所以简单的答案是&#34; no&#34;。

根据您的需要,您可以使用其中一个Class.newInstance methods,也可以将类对象保留在字段中。

答案 1 :(得分:1)

从纯粹的句法角度来看,不,你不能。类型参数必须是编译时已知的类型名称(或通配符?)。它们不能是变量或其他表达式来计算值。

目前还不清楚为什么需要这个,特别是因为anInstance的类型为SomeClass<?>,在这种情况下你不会关心使用的类型参数。

相关问题