比较方法违反了其总合同。简单比较

时间:2013-05-29 11:35:08

标签: java swing comparison contract

我在摇摆(java)

进行纸牌游戏

用户必须等待轮到他,拿一张卡,然后按确认。当轮到他时,他不能拿任何卡。

以这种方式开始:

this.cardTaken = false;
board.canTakeCards(!cardTaken);

然后在董事会课程中接下来的行动:

public void canTakeCards(boolean can) {
        if (can) {
            this.btnConfirm.setEnabled(false);
            this.pnlCards.setCanTake(true);

        } else {
            this.btnConfirm.setEnabled(true);
            this.pnlCards.setCanTake(false);
        }

else在用户拿卡时发生。)

因此。我在第Comparison method violates its general contract行<{1}}获得了<{1}}

这只发生过一次,我“测试”了我的游戏大约8次。我真的很困惑,也很害怕。

我的一个理论是,我在相同的执行时间从代码的2个不同部分调用此函数,并且它同时收到board.canTakeCards(!cardTaken);true。但我修改了我的代码,我认为这是不可能的。

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:4)

此消息文本包含在从Java 7已排序集合抛出的异常中,表示相关对象具有compareTo的不一致实现,这基本上意味着它不会对对象强加总排序。在Java 7之前,这是默默无闻的。修改你的Comparable课程。