Java 中的泛型数组
数组和泛型在 Java 中造成了编程障碍。您无法直接创建参数类型数组。这是因为数组是协变的,这意味着它们在运行时保留其元素的类型,而泛型使用类型擦除。
解决方法是使用 Array.newInstance(),如下所示:
private Comparable[] hashtable; ... hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);
但是,需要注意的是,这个解决方案并不理想。
为什么不使用泛型数组?
为了避免这些问题,建议在使用泛型时使用 ArrayList 而不是数组。 ArrayList 是协变且类型安全的,这使得它们成为存储泛型类型的更好选择。
有关更详细的说明,请参阅 Java 泛型常见问题解答:
我可以创建一个组件类型为具体参数化类型的数组吗?
不可以,因为它不是类型安全的。
数组是协变的,这意味着超类型引用数组是子类型引用数组的超类型。也就是说,Object[] 是 String[] 的超类型,可以通过 Object[] 类型的引用变量来访问字符串数组。
以上是为什么我无法在 Java 中创建通用数组?的详细内容。更多信息请关注PHP中文网其他相关文章!