java - 泛型数组无法转换为可比较 Java 的对象
问题描述
我想在 Java 中创建一个接受泛型的类,但我还想强制使用泛型来实现Comparable
接口。这是代码
public class MyClass<Item extends Comparable> {
private Item[] items;
private Item[] copies;
public MyClass(Item[] items) {
this.items = items;
copies= (Item[])new Object[items.length];
for (int i = 0; i < items.length; ++i) {
copies[i] = items[i];
}
}
public static void main(String[] args) {
Integer[] items = {23, 36, 45, 66, 25, 38, 47};
MyClass<Integer> myClass= new MyClass<Integer>(items);
}
}
当我尝试运行代码时,出现以下错误:
java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to
class [Ljava.lang.Comparable; ([Ljava.lang.Object; and [Ljava.lang.Comparable;
我应该如何重构此代码以使其正常工作,同时强制它仅接受 Comparable Generics 并保留copies
内部构造函数的实例化MyClass
?
解决方案
推荐阅读
- .htaccess - 使用 htaccess 重定向页面或将 https 更改为 http
- sql - 选择一个计数和一个大于一的最大值的计数
- image - 从wireshark捕获的数据包重新创建图像
- c++ - 在一个类中声明另一个类的成员(它接受一个参数)?
- python - 从 MongoDB 中的特定日期替换大量文档
- ios - ios磁力计错误值
- xml - 通过 Tally 中的 XML 请求导入特定账单(针对 Ref)的付款凭证
- android - 在 xamarin.Android 中使用 MVVMLight 启用和禁用按钮
- database - 我在哪里可以下载一些关于汽车数据的示例数据库?
- r - 仅计算重采样站点的 Jaccard