首页 >Java >java教程 >为什么我无法在 Java 中创建通用数组?

为什么我无法在 Java 中创建通用数组?

Susan Sarandon
Susan Sarandon原创
2024-10-28 22:15:31603浏览

 Why Can't I Create Generic Arrays in Java?

Java 中的泛型数组

数组和泛型在 Java 中造成了编程障碍。您无法直接创建参数类型数组。这是因为数组是协变的,这意味着它们在运行时保留其元素的类型,而泛型使用类型擦除。

解决方法是使用 Array.newInstance(),如下所示:

private Comparable[] hashtable;

...

hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);

但是,需要注意的是,这个解决方案并不理想。

为什么不使用泛型数组?

  • 数组是协变的,但泛型不是.
  • 这意味着超类型的数组不一定是子类型的数组。
  • 例如,Object[] 数组不一定是 Comparable[] 数组。

为了避免这些问题,建议在使用泛型时使用 ArrayList 而不是数组。 ArrayList 是协变且类型安全的,这使得它们成为存储泛型类型的更好选择。

有关更详细的说明,请参阅 Java 泛型常见问题解答:

我可以创建一个组件类型为具体参数化类型的数组吗?

不可以,因为它不是类型安全的。

数组是协变的,这意味着超类型引用数组是子类型引用数组的超类型。也就是说,Object[] 是 String[] 的超类型,可以通过 Object[] 类型的引用变量来访问字符串数组。

以上是为什么我无法在 Java 中创建通用数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn