Java泛型约束需要像C#这样的默认构造函数

Ric*_*ich 4 java generics

在C#中,我可以对泛型参数设置类型约束,该参数要求泛型类型具有默认的无参数构造函数.我可以用Java做同样的事吗?

在C#中:

    public static T SomeMethodThatDoesSomeStuff<T>() where T : class, new()
    {
            // ... method body ...
    }
Run Code Online (Sandbox Code Playgroud)

class和new()约束意味着T必须是可以使用零参数的new运算符调用的类.我对Java泛型的了解很少,我可以extends用来命名一个必需的超类.我可以使用它(或任何其他支持的操作)来实现上述功能吗?

irr*_*ble 8

没有; 在Java中,典型的解决方案是传递一个类,并且doc是0-arg构造函数的要求.这肯定不是静态检查,但不是太大的问题

/** clazz must have a public default constructor */
public static <T> T f(Class<T> clazz)
    return clazz.newInstance();
Run Code Online (Sandbox Code Playgroud)