如何制作一个新的T类型的对象

Pit*_*taJ 3 java generics

我正在尝试制作一个新的T类型的对象。

我试过了:

T h = new T();
T h = T.newInstance();
Run Code Online (Sandbox Code Playgroud)

那些不起作用。我也尝试过:

T h = (T)(new Object());
Run Code Online (Sandbox Code Playgroud)

可行,但随后h.getClass().getName()返回java.lang.Object

有什么方法可以在不知道类名称的情况下创建此类的默认对象?

编辑(从评论):

T是通用的。喜欢Class<T>

And*_*nek 5

正如乔恩所说,由于类型擦除,您明确需要该类。

例如,如果您有通用方法,则必须这样做:

public void <T> myMethod(Class<T> clazz) {
    T foo = clazz.newInstance();
}
Run Code Online (Sandbox Code Playgroud)

如果是泛型类,则其基本原理相同。您只需要将类对象传递给方法,甚至传递给构造函数即可。

  • 假设该类具有默认构造函数,例如“ class Foo {public Foo(){}}”,这将起作用。 (4认同)