2015-04-17 3 views
1

Цитируя this page, в предложении метода:ClassCastException в методе предлагают

ClassCastException - если указанный элемент не может быть по сравнению с элементами в настоящее время в этой приоритетной очереди в соответствии с заказом очереди приоритета-х

Как это возможно? Я не могу вызывать classCastException в этом методе. Может ли кто-то выбросить ClassCastException с помощью этого метода?

+0

Похоже, вы смешиваете какие объекты вы пытаетесь вставить в очередь приоритетов. Отправьте свой код, где вы это называете! – javajavajava

+0

@BarbiePylon OP спрашивает, в каком случае будет выбрано исключение, ссылаясь на то, что сказано в документации. –

+1

Ahh в порядке, в этом случае ответ @ Jean-FrançoisSavard при условии, выглядит хорошо! – javajavajava

ответ

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) 

В основном, будет сгенерировано исключение, если вы предлагаете объект, который не совместим с объектами уже в очередь.

+1

Я хорошо понимаю. Мы должны объявить нетипичную очередь. PriorityQueue test = new PriorityQueue(); не приоритет () или любого типа. Большое вам спасибо, вы про. –

+0

@HalilReis Всегда зависит от того, что вы хотите принять. Пожалуйста. –