Javagenerics约束需要像C#这样的默认构造函数
在C#中,我可以对generics参数设置类型约束,该参数要求generics类型具有默认的无参数构造函数。 我可以用Java做同样的事吗?
在C#中:
public static T SomeMethodThatDoesSomeStuff() where T : class, new() { // ... method body ... }
class和new()约束意味着T必须是可以使用零参数的new运算符调用的类。 我对Javagenerics知之甚少,我可以使用extends
来命名一个必需的超类。 我可以使用它(或任何其他支持的操作)来实现上述function吗?
没有; 在Java中,典型的解决方案是传递一个类,并且doc是0-arg构造函数的要求。 这当然不是静态检查,但不是太大的问题
/** clazz must have a public default constructor */ public static T f(Class clazz) return clazz.newInstance();
没有。
由于类型擦除,
的类型在运行时是未知的,因此实际上不可能实例化它。