繁体   English   中英

实例化泛型类的JAVA数组

[英]Instantiating JAVA Array of Generic Class

E[] arr = (E[])new Object[INITIAL_ARRAY_LENGTH];

上面的代码是从取以下职位:

其中E是泛型类。 当我们使用对象类型实例化数组时,编译器/ JVM如何知道需要分配多少内存。 我的理解是,类型转换只允许更改引用类型,但不允许更改底层对象结构。

某种大小的引用类型的数组将在内存中占据相同的大小,而不管它持有什么类型的对象。 这是因为内存只保存引用(指针),而不是创建这些对象时分配的数组项的内存。 然后,堆将在创建新对象并将其分配给数组时保留它们。

因此,以下数组将占用相同的大小:

new Integer[10]
new BigInteger[10]
new String[10]
new Object[10]

请注意,对于编译器,非约束通用类型的数组会转换为Object的数组。

另请注意,基元数组可能具有不同的内存占用。

.....

同样,这只是数组本身的内存, 而不是它引用的项目 - 这是所有这一点中非常重要的一点,可能理解这一点最重要的一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM