为什么我被允许这样做:
TreeSet<Object> treeSet = new TreeSet<Object>();
treeSet.add(new Object());
Run Code Online (Sandbox Code Playgroud)
但不是这个:
final List<Object> objects = new ArrayList<Object>();
Collections.sort(objects);
Run Code Online (Sandbox Code Playgroud)
第一个给了我一个ClassCastException,但第二个给了我一个编译错误.据我所知,实际问题在两种情况下都是相同的:java.lang.Object没有实现Comparable接口.
更新:嗯由于某种原因这只适用于Java 7而不是6.我是愚蠢还是累?有人可以对此有所了解吗?
更新#2:我的确会得到不同的结果,具体取决于java版本.请看图片:

最初我在这里皱眉,但你是对的.
该SortedSet接口不会强制您指定其泛型类型,Comparable因为TreeSet还允许您指定不是Comparator的类型Comparable.编译器无法区分这两个选项.
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |