1
다음 코드는 컴파일을 통과하는 데 적합합니다. PriorityQueue를 정의하여 Comparable의 instanceof 요소 만 가져올 수있는 이유는 무엇입니까?왜 priorityQueue에 컴파일 타임에 비교 가능한 인터페이스가 필요하지 않습니까?
...
PriorityQueue<Object> q = new PriorityQueue<Object>();
q.add(new Object());
...
하지만 예상 예외를 throw : 당신은 당신이 Comparator
를 제공하는만큼 Comparable
, 를 구현하지 않는 객체를 저장할 수있는
Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.Comparable
at java.util.PriorityQueue.siftUpComparable(PriorityQueue.java:595)
at java.util.PriorityQueue.siftUp(PriorityQueue.java:591)
at java.util.PriorityQueue.offer(PriorityQueue.java:291)
at java.util.PriorityQueue.add(PriorityQueue.java:268)
at ReentrantLockExample.main(ReentrantLockExample.java:12)