從this page引用,在提供方法,包括:ClassCastException異常的方法中提供
ClassCastException - 如果指定元素不能與在此優先級隊列中當前元素進行比較,根據所述優先級隊列的排序
這怎麼可能?我不能在這個方法中拋出classCastException。有人可以用這種方法拋出ClassCastException嗎?
從this page引用,在提供方法,包括:ClassCastException異常的方法中提供
ClassCastException - 如果指定元素不能與在此優先級隊列中當前元素進行比較,根據所述優先級隊列的排序
這怎麼可能?我不能在這個方法中拋出classCastException。有人可以用這種方法拋出ClassCastException嗎?
只需在Queue
中添加一些元素,例如String
即可。
然後調用offer
方法給出與Integer
不兼容的字符串。
這個片斷:
public static void main(String args[])
{
PriorityQueue test = new PriorityQueue();
test.add("test");
test.offer(new Integer(1));
}
會產生這樣的錯誤:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at java.lang.Integer.compareTo(Integer.java:52)
at java.util.PriorityQueue.siftUpComparable(PriorityQueue.java:656)
at java.util.PriorityQueue.siftUp(PriorityQueue.java:647)
at java.util.PriorityQueue.offer(PriorityQueue.java:344)
at test.Test.main(Test.java:15)
基本上,將引發異常,如果你提供了一個對象,它是不是與對象兼容已經在隊列。
我很好理解。我們必須聲明非類型隊列。 PriorityQueue test = new PriorityQueue();不是優先
@HalilReis它總是取決於你想要接受的。別客氣。 –
這聽起來像你正在混合什麼樣的對象,你試圖插入優先隊列。將您的代碼發佈到您呼叫的地方! – javajavajava
@BarbiePylon OP詢問在哪種情況下會拋出異常,並引用文檔中提到的內容。 –
啊,好吧,在這種情況下,答案@ Jean-FrançoisSavard提供的看起來不錯! – javajavajava