比较运算符自定义对象java

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)

Rob*_*sen 5

在 Java 中,<运算符只能用于数字类型。编译器不会自动应用该compareTo方法进行对象比较。

重写你的条件如下:

if (a.compareTo(b) < 0){ /* ... */ }
Run Code Online (Sandbox Code Playgroud)

该方法的语义在JavaDoccompareTo中有清晰的记录,但本质上可以归结为:

当此对象小于、等于或大于指定对象时,返回负整数、零或正整数。

  • 我认为你也应该向他解释一下“compareTo”方法的返回值。 (2认同)