如果我有这样的通用类:
class SomeClass<T> {
public aFunction(T anArg) {
// some implementation
}
}
有没有办法使用Class类型的变量来实例化SomeClass?
我基本上希望能够做到这一点:
Class var = String.class; // just an example, obviously
SomeClass<?> anInstance = new SomeClass< var >();
或者有解决方法吗?
答案 0 :(得分:1)
Java使用type erasure,因此在运行时泛型类型不知道它们的类型参数。所以简单的答案是&#34; no&#34;。
根据您的需要,您可以使用其中一个Class.newInstance
methods,也可以将类对象保留在字段中。
答案 1 :(得分:1)
从纯粹的句法角度来看,不,你不能。类型参数必须是编译时已知的类型名称(或通配符?
)。它们不能是变量或其他表达式来计算值。
目前还不清楚为什么需要这个,特别是因为anInstance
的类型为SomeClass<?>
,在这种情况下你不会关心使用的类型参数。