java 中泛型数组初始化的问题

Problem with generic array initialization in java

提问人:abhinav 提问时间:8/10/2023 最后编辑:abhinav 更新时间:8/10/2023 访问量:56

问:

我正在使用泛型类型,并想创建一个相同的数组。<T extends Comparable<T>>

我尝试了这种方法:

T[] arr = (T[]) new Object[length]

但是代码与 .ClassCastException : class java.lang.Object cannot be cast to class java.lang.Comparable

当然,我可以使用实现 .例如:Comparable

T[] arr = (T[]) new Integer[length]

但这会扼杀我的代码的目的。有谁知道任何解决方法?

Java 泛型转换

评论

4赞 Sweeper 8/10/2023
怎么样 ?new Comparable[length]
0赞 Maarten Bodewes 8/10/2023
你为什么需要它?通常,接受 a 的函数还提供了一个重载,该重载采用泛型对象以及 .ComparableComparator
0赞 abhinav 8/10/2023
您的解决方案@Sweeper有效,但为什么呢?我以前没有尝试过,因为我认为我们不能使用 new 关键字实例化接口!(我是一名学生,不太了解 Java 语言的复杂性)
2赞 Sweeper 8/10/2023
您不是在实例化接口。您正在实例化一个数组,该数组可以包含实现 的类的实例。Comparable
1赞 user16320675 8/10/2023
不要混淆 - 首先是创建(或尝试创建)该接口的实例;第二种是为该类型的元素创建数组的实例(尚未创建该类型的实例)new Comparablenew Comparable[]

答: 暂无答案