Java不允许我们这样做的原因是什么

private T[] elements = new T[initialCapacity];

我可以理解.NET不允许我们这样做,因为在.NET中,您的值类型在运行时可以具有不同的大小,但是在Java中,所有类型的T都将是对象引用,因此具有相同的大小(如果我错了,请纠正我).

原因是什么?

推荐答案

这是因为Java的数组(与泛型不同)在运行时包含有关其组件类型的信息.因此,在创建数组时必须知道组件类型.因为在运行时不知道T是什么,所以不能创建array.

Java相关问答推荐

JPackaged应用程序启动MSI调试,然后启动System. exit()

Javascript更新alert 可扩展内容样式与CSS—按钮更多/更少

如果一个子类没有构造函数,超类也没有构造函数,那么为什么我可以构造子类的实例呢?

所有 case 一起输入时输出错误,而单独放置时输出正确

在springboot 3中,当我调用api endpoint时,会出现404

当涉及到泛型时,类型推理在Java中是如何工作的?

如何修复PDF重建过程中的文本定位

Spring和可编辑";where";@Query

使SLF4J在Android中登录到Logcat,在测试中登录到控制台(Gradle依赖问题)

使用用户引入的参数生成人员数组

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

IntelliJ IDEA依赖项工具窗口丢失

为了安全起见,有必要复制一份 list 吗?

我的代码是线程安全的吗?[Java、CAS、转账]

未调用OnBackPressedCallback-Activitiy立即终止

ControlsFX RangeSlider在方向垂直时滞后

简化每个元素本身都是 map 列表的列表

JavaFX中ListView中的问题

java.exe如何执行java源代码?

setMaxTotal实际上是做什么的? (MySQL与Java和Apache BasicDataSource连接池)