Comparable を実装しない任意のクラスを作成し、それをツリーセットとして使用しようとすると、実行時にオブジェクトが挿入されたときに例外がスローされます。
public class Foo {
}
public TreeSet<Foo> fooSet = new TreeSet<Foo>();
fooSet.add(new Foo()); // Throws a ClassCastException exception here: Foo is not comparable
私は Java の専門家ではありませんが、これについては、予期していなかった方法で動的に型付けされているように見えました (ala Python)。TreeSet の実装で、ジェネリック型引数が Comparable を実装する必要があることを指定して、コンパイル時にキャッチできるようにする方法はありませんか? 非ジェネリック関数は、引数としてインターフェイスを取ることができます。ジェネリックでも同じことはできませんか?