【发布时间】:2014-03-05 16:28:54
【问题描述】:
这是我的代码:
public static void main(String[] args){
TreeSet<Dog> d = new TreeSet<Dog>();
d.add(new Dog());
System.out.println(d.size());
}
class Dog{
}
如您所见,Dog 类不是Comparable 对象,我确定没有指定Comparator 用于排序。这个sn-p的代码是如何无异常运行的呢?它打印出1。
我尝试将另一个 Dog 添加到 TreeSet,它按预期抛出了一个 ClassCastException。
编辑:我正在使用 Java 6
【问题讨论】:
-
我在 Java 7 中确实得到了
ClassCastException。添加的第一个元素应该与它自身进行比较。我相信这个改变是为了抓住那个极端情况。 -
哦,我忘了说我正在使用 Java 6。
-
再添加一个元素,你会得到你想要的:)
-
@Mak 是的,我知道哈哈。只是我希望它在我第一次添加一个不可比较的对象时抛出异常:P
-
@MiguelPortugal :) Java 人员正在努力解决这些问题,正如您现在看到的那样,它在 Java 7 中已修复,但您确实得到了异常。