是否有插件支持自定义对象的比较操作?
我想用这个:
class MyTemperatureObject implements Comparable<MyTemperatureObject> {
...
@Override
public int compareTo(MyTemperatureObject object) {
return getValue().compareTo(object.getValue());
}
}
MyTemperatureObject a;
MyTemperatureObject b;
if (a < b){
...
}
这给出了编译错误:
Operator '<' cannot be applied to MyTemperatureObject
但我认为编译器可以使用 Comparable 接口来评估这一点。或者是否有可能这样做是不可能或不明智的。
我知道我可以使用compareTo函数
a.compareTo(b) < 0
但我认为这是更好的可读性/可理解性
a < b
答案 0 :(得分:4)
在Java中,<
运算符只能用于数字类型。编译器将不自动应用compareTo
方法进行对象比较。
重写您的条件如下:
if (a.compareTo(b) < 0){ /* ... */ }
compareTo
方法的语义清楚地记录在JavaDoc中,但实质上它归结为:
返回负整数,零或正整数作为此对象 小于,等于或大于指定的对象。
答案 1 :(得分:1)
如果你想在C ++运算符重载上做{:3}},那么它在java上就不存在了。
答案 2 :(得分:0)
您可以参考compareTo
方法的文档。
<强>返回:强> 一个负整数,零或正整数,因为此对象小于,等于或大于指定的对象。
您可以使用compareTo方法。
if (a.compareTo(b) < 0){
// Your code
}
运营商'&lt;'无法应用于MyTemperatureObject
答案: Java不支持运算符重载,因为C ++支持它。因此,您只能使用<
/ >
运算符进行数值比较。
答案 3 :(得分:0)
您必须使用调用compareTo方法的特定类, 看看这个教程,希望对你有所帮助 http://www.tutorialspoint.com/java/java_using_comparator.htm