我熟悉使用Comparable接口的标准比较,虽然今天我想要比较几个不同的变量时遇到一些麻烦.
我基本上想要实现一个compareTo方法,只有在以下if语句为真时才产生结果-1:
if (o.maxX > minX && o.maxY > minY && o.minZ < maxZ)
Run Code Online (Sandbox Code Playgroud)
虽然,我不确定这是否可能使用类似的,或者我只是不像它看起来那么熟悉.因为当我尝试这种方法时
public int compareTo(IsoSprite o) {
if (o.maxX > minX && o.maxY > minY && o.minZ < maxZ){
return -1;
}else if(o.maxX < minX && o.maxY < minY && o.minZ > maxZ){
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到错误"比较方法违反了其总合同!" .我想澄清一点,我不需要帮助理解这个错误意味着什么,因为我已经阅读了几个关于它的问题.虽然,我仍然不能把我的想法放在这个特定的问题上,因为我读过的其他问题的解决方案是微不足道的.
我真的很感激这种比较的一些帮助,它将是一个救生员.任何输入也很受欢迎.
编辑:经过测试后,我得到的东西几乎可以工作(并非在所有情况下),但我无法弄清楚原因:
public int compareTo(IsoSprite o) {
if (o.maxX > minX && o.maxY > minY && o.minZ < maxZ) {
return -1;
} …
Run Code Online (Sandbox Code Playgroud)