使用非可比类创建树集:为什么是运行时异常,而不是编译时错误?
如果我创建一个不实现Compolar的任意类,并尝试将其用作树集,则在插入对象时,它会在运行时引发异常:
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 的实现没有办法指定其泛型类型参数必须实现可比较,以便在编译时捕获它?非泛型函数可以将接口作为参数;泛型也不可能吗?