1

我有一个用于 GAE 的 Java 应用程序,它使用具有以下类的 maven(net.kindleit 版本):

public class C1 {

    ...
    @Persistent(mappedBy = "c1")
    @Element(dependent = "true")
    private Set<C2> c2s = new HashSet<C2>();

    public Set<C2> getC2s() {
        return this.c2s;
    }
    '''
}

public class C2 {

    private C1 c1;

    ...
    more properties, getters and setters
    ...

}

在我的一项测试中,我正在执行以下操作:

C2 myC2 = new C2(myC1);
myC1.getC2s().add(myC2);

单元测试在 Eclipse 中运行,代码也可以在生产应用程序中运行,但是当我在 maven 下运行单元测试时,测试失败并显示以下内容:

java.lang.ClassCastException: 
    com.me.model.C2 cannot be cast to java.lang.Comparable
    at java.util.TreeMap.compare(TreeMap.java:1188)
    at java.util.TreeMap.put(TreeMap.java:531)
    at java.util.TreeSet.add(TreeSet.java:255)
    at com.me.service.C2ServiceImpl.createC2(C2ServiceImpl.java:319)

我理解这个例外,因为 C2 没有实现可比性,并且需要将东西插入 TreeSet,但问题是,为什么它返回由 TreeSet 而不是 HashSet 支持的 Set。

4

0 回答 0