次のコードは、コンパイルに合格することができます。instanceof Comparable である要素のみを受け取るように PriorityQueue を定義できるのはなぜですか?
...
PriorityQueue<Object> q = new PriorityQueue<Object>();
q.add(new Object());
...
ただし、予想される例外がスローされます。
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)