簡體   English   中英

Generics 的數組不能轉換為 Object 到可比較的 Java

[英]Array of Generics Can not Cast to Object to Comparable Java

我想創建一個 class,它接受 Java 中的 generics,但我還想強制執行 Generic 來實現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的構造函數中?

創建一個Comparable數組而不是Object數組。

this.copies = (Item[]) new Comparable[items.length];

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM