【发布时间】:2019-05-04 09:54:47
【问题描述】:
当使用默认构造函数(无参数)在 Java 中创建类 TreeSet 的实例并添加两个未实现 Comparator 接口的类对象时,该对象将引发运行时异常。这个检查可以在编译时实现吗?
我已经尝试了以下代码:
Dummy.java
public class Dummy {
}
TreeSetTest.java
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] argv) {
TreeSet<Dummy> treeSet = new TreeSet<>();
treeSet.add(new Dummy());
treeSet.add(new Dummy());
}
}
编译器在创建 TreeSet 时应该报错,因为它没有实现 Comparable。
【问题讨论】:
-
TreeSet早于泛型,需要向后兼容。 -
@user207421 为了强制执行,需要进行哪些更改? (给n个源代码link)