Comparison method violates its general contract Exception

今天代码中本地运行可以,qa运行报如下错误。

Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!

比较代码:

    if(this.getDisplayOrder() == null){
            return 1;
        }else if(o.getDisplayOrder() == null){
            return -1;
        }else{
            return this.getDisplayOrder().compareTo(o.getDisplayOrder());
    }

原因:有些情况比较返回的值非数字, 或者没有考虑到某些情况导致的。
改成如下代码就可以了:

if(c1.getDisplayOrder() == null && c2.getDisplayOrder() == null){
                    return 0;
                } else if(c1.getDisplayOrder() == null){
                    return 1;
                }else if(c2.getDisplayOrder() == null){
                    return -1;
                }else{
                    return c1.getDisplayOrder().compareTo(c2.getDisplayOrder());
                }
阅读更多
个人分类: javaEE & SSH
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Comparison method violates its general contract Exception

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭