我在摇摆(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
。但我修改了我的代码,我认为这是不可能的。
有什么建议吗?感谢
答案 0 :(得分:4)
此消息文本包含在从Java 7已排序集合抛出的异常中,表示相关对象具有compareTo
的不一致实现,这基本上意味着它不会对对象强加总排序。在Java 7之前,这是默默无闻的。修改你的Comparable
课程。