bmo*_*oij 2 java compare operators
是否有插件支持对自定义对象进行比较操作?
我想用这个:
class MyTemperatureObject implements Comparable<MyTemperatureObject> {
...
@Override
public int compareTo(MyTemperatureObject object) {
return getValue().compareTo(object.getValue());
}
}
MyTemperatureObject a;
MyTemperatureObject b;
if (a < b){
...
}
Run Code Online (Sandbox Code Playgroud)
这给出了编译错误:
Operator '<' cannot be applied to MyTemperatureObject
Run Code Online (Sandbox Code Playgroud)
但我认为编译器可以使用Comparable接口来评估这一点。或者是否有理由认为这样做不可能或不明智。
我知道我可以使用compareTo函数
a.compareTo(b) < 0
Run Code Online (Sandbox Code Playgroud)
但我认为这更好读/理解
a < b
Run Code Online (Sandbox Code Playgroud)
在 Java 中,<运算符只能用于数字类型。编译器不会自动应用该compareTo方法进行对象比较。
重写你的条件如下:
if (a.compareTo(b) < 0){ /* ... */ }
Run Code Online (Sandbox Code Playgroud)
该方法的语义在JavaDoccompareTo中有清晰的记录,但本质上可以归结为:
当此对象小于、等于或大于指定对象时,返回负整数、零或正整数。