1
11
除非将T作为参数传入,否则无法在java中创建泛型“T”类型的数组。
|
2
3
这是因为在运行时,泛型类型丢失(“擦除”),无法恢复。 是否有不能使用的原因,例如,new ArrayList<T>()? |
3
3
Java没有等效的构造。在包含构造函数的类上没有编译时安全性。
上述方法可以工作,但如果没有公共无参数构造函数,则会引发异常。您无法让编译器强制存在一个。 编辑:ChssPly76抢先一步,所以我修改了上面的代码,给出了一个示例,其中您传入了一个实际的对象示例,只是为了演示它是如何完成的。通常在这种情况下,您会传入类,因为sampleObject不会在数组中结束。 |
4
1
您可以使用此想法修复其他答案中缺少编译时检查的问题:
这实际上比您描述的C#方式更灵活,因为您可以根据需要控制构造函数,而不是简单地调用无参数构造函数。 |
5
0
Scala确实如此,但它比实现适当的接口慢得多(因为它在内部使用反射来进行函数调用)。Scala不允许对对象构造函数的形式设置约束。JVM使用类型擦除,因此泛型代码实际上不知道它操作的是什么类型,因此它无论如何也不能构造这种类型的新对象。 |
koryakinp · Where子句和Join的LINQ顺序 6 年前 |
lost9123193 · 使用。Where子句和筛选数组的条件 6 年前 |
user9639519 · 如何基于索引外的行向新列返回值 6 年前 |
PWT · 如何在何处设置SQL条件 6 年前 |
user8420047 · Where子句的SQL问题 6 年前 |
Rebel · 如何隔离具有受约束高度的三维曲面的区域? 6 年前 |
Mark · SQL;按合并列搜索 6 年前 |
Saef Myth · Mysql比较两个数字列表 6 年前 |
SAT · 为什么在if中使用LINQ会更改属性 6 年前 |