[英]class cast exception and generics (java)
我正在實現自己的優先級隊列,並使用一個使用它的名為sportsball的類。 優先級隊列基於泛型,並使用Node(T對象,int值)(即玩家名稱及其分數)。 嘗試運行程序時出現類強制轉換異常錯誤。
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node;
at PriorityQueue.<init>(PriorityQueue.java:35)
at sportsball.main(sportsball.java:48)
有問題的行是:PriorityQueue.java:35:
Node[] array = (Node[])(new Object[initialSize]);
sportsball.java:48:
PriorityQueue<String> queue = new PriorityQueue<String>(start, step);
謝謝您的幫助!
注意:
當我嘗試使用PriorityQueue.java:35行時:
Node[] array = new Node[initialSize];
錯誤:將彈出通用數組創建。
您不能將Object
轉換為Node
,因此您不應將Object[]
Node[]
轉換為Node[]
。 只需直接創建Node[]
。
Node[] array = new Node[initialSize];
您不能像以前那樣將對象投射到節點上
Node[] array = (Node[])(new Object[initialSize]);
因此,出現了ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node
ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node
,這很明顯對象無法ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueue$Node
為Node Type
所以你可以選擇這個選項
Node[] array = new Node[initialSize];
您不能簡單地將Object []強制轉換為Node []。 這確實會生成ClassCastException。 只需創建一個Node []即可( Node[] array = new Node[initialSize];
)。 沒有比這更多的代碼,我無話可說。
請注意,ClassCastException消息已經表明了問題。 [Ljava.lang.Object;
引用Object[]
,類似地, [LPriorityQueue$Node;
指Node[]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.