方法提供中的ClassCastException

时间:2015-04-17 11:21:38

标签: java classcastexception

来自this page的报价方式:

  

ClassCastException - 如果指定的元素无法根据优先级队列的顺序与当前在此优先级队列中的元素进行比较

这怎么可能?我不能在这个方法中抛出classCastException。有人可以使用此方法抛出ClassCastException吗?

1 个答案:

答案 0 :(得分:3)

只需在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)

基本上,如果您提供的对象与队列中已有的对象不兼容,则会抛出异常。