我正在寫一個等距遊戲,它根據Y座標呈現對象,使用可比類,按其Y值排序,進行哪些更改。我收到錯誤「比較方法違反其總合同!」並閱讀有關如何返回一個負數,0或正數,所以我已經實現了這一點:Java可比較類 - 比較方法違反其總體合同
public boolean equals(Entity e) {
if ((e.y-y)==0)
return (e.id == id);
return (e.y == y);
}
public int compareTo(Entity e) {
if ((e.y-y)==0)
return (e.id - id);
return (int) (e.y - y); // Render order by y coordinate
}
但我仍然得到錯誤。排序不會工作,如果價值觀的變化,或者我做了其他錯誤?
你的'y'字段是什麼類型? –
y是浮點類型 –
關於該異常消息已有很多問題。發帖前搜索。證明你的問題不是上述問題之一的重複。 – Raedwald