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

标签 java generics

在 C# 中,我可以对泛型参数施加类型约束,要求泛型类型具有默认的无参数构造函数。我可以在 Java 中做同样的事情吗?

在 C# 中:

    public static T SomeMethodThatDoesSomeStuff<T>() where T : class, new()
    {
            // ... method body ...
    }

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

最佳答案

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

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

关于Java 泛型约束需要像 C# 这样的默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563654/

相关文章:

c# - Autofixture.Automoq - 泛型使 bool 始终为真

java - Weblogic 在 VM(VirtualBox 和 VMware)下启动缓慢(11 分钟)

java - 如何访问 Spring Soap 端点中的 SOAP header ?

Java 未定义泛型括号用法

Java 类型删除和数组

swift - 从单元格委托(delegate)中删除重复代码代码

java - 创建通用的 groupBy 方法

java - App 的背景音乐应该有自己的主线吗?

java - 打印给定序列的字符组合

java - 使用相对路径读取 JAR 中的文件