11章-练习29


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类,即可正常
*///:~
posted @ 2022-08-26 10:45  loadL  阅读(8)  评论(0)    收藏  举报