import java.util.PriorityQueue;
/**
* 练习29: 创建一个继承自Object的简单类,它不包含任何成员,展示你不能将这个类的多个示例成功地添加到一个PriorityQueue中。
*/
public class Exercise29 {
public static void main(String[] args) {
PriorityQueue<FreeObject> priorityQueue = new PriorityQueue<FreeObject>();
for (int i = 0; i < 5; i++) {
FreeObject f = new FreeObject();
priorityQueue.offer(f);
}
System.out.println(priorityQueue);
}
}
class FreeObject {
}
class FreeObjectWithCompare implements Comparable {
@Override
public int compareTo(Object o) {
return 1;
}
}
/* OutPut:
抛出异常,添加失败
Exception in thread "main" java.lang.ClassCastException: FreeObject cannot be cast to java.lang.Comparable
使用PriorityQueue包含自己的类,必须包括额外的功能以产生自然排序,或者必须提供自己的Comparator
使用FreeObjectWithCompare类,即可正常
*///:~