简介
泛型数组,其中数组元素共享一个由于泛型和数组的协变行为之间的相互作用,通用类型参数在 Java 中提出了独特的挑战。
问题
我们能否创建一个泛型数组,其中泛型类型扩展了 Comparable?尝试将对象数组转换为扩展 Comparable 的通用数组面临问题,引发以下问题:有解决方法吗?
答案
泛型和数组:兼容性难题
泛型和数组处理类型的方式截然不同:
由于这种不匹配,创建一个泛型数组扩展特定类的类型是不可能的。
Array.newInstance():一种解决方法
一个潜在的解决方案是使用 Array.newInstance() 方法:
<code class="java">private Comparable[] hashtable; ... hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);</code>
此方法允许您创建泛型类型的超类型的数组(在本例中为 Comparable),但需要注意的是,该数组不是所需的泛型类型。
为什么不将数组与泛型一起使用?
虽然有解决方法,但通常不鼓励将数组与泛型一起使用,因为:
替代方案:ArrayList
更合适的选择是使用 ArrayList ,它提供了一种有效且类型安全的方法来管理通用对象的集合。 ArrayList 提供了泛型的灵活性,并避免了与数组和泛型相关的潜在陷阱。
以上是我们可以在 Java 中创建扩展 Comparable 的通用数组吗?的详细内容。更多信息请关注PHP中文网其他相关文章!