2

Java の PriorityQueue が次のように定義されているのはなぜですか。

PriorityQueue<T>

としてではなく、

PriorityQueue<T extends Comparable<? super T>

タイプ Comparable のオブジェクトをキューに入れないと、実行時に ClassCastException が発生します。(そして、カスタム Comparator を使用していない場合)。

コンパイル時にキャッチしないのはなぜですか?

4

1 に答える 1

5

Comparableこれは、インターフェイスを実装していないオブジェクトの優先キューを引き続き使用できるようにするためです。このような場合は、独自のカスタムコンパレータを提供するだけで、すべてが正常に機能します。

これにより、最小限のコストから無料で、クラスの使いやすさが向上します。この動作は、 Javadocで十分に文書化されています。

于 2013-02-21T02:13:10.087 に答える