是否可以像在下面的代码片段中一样在Java中实例化通用对象?我知道在C#中它是可能的.但是,我还没有在Java中看到类似的机制.
// Let T be a generic type.
T t = new T();
Run Code Online (Sandbox Code Playgroud)
不,由于类型擦除,这在Java中不起作用.到代码执行时,代码不知道是什么T.
请参阅Java Generics FAQ,了解有关Java泛型的更多信息:) - 特别参见Type Erasure部分.
如果您需要知道T执行时的类型,由于这个或其他原因,您可以将其存储在a中Class<T>并将其置于构造函数中:
private Class<T> realTypeOfT;
public Foo(Class<T> clazz) {
realTypeOfT = clazz;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以打电话newInstance()等.