Java compareTo和运算符
如果我有一个类Person
实现了Comparable
(例如,将personA.height
与personB.height
进行比较),是否可以使用
personA < personB
代替
personA.compareTo(personB) == -1?
这样做有什么问题吗?或者我需要让操作员超负荷工作吗
你可以在下面搜索框中键入要查询的问题!
如果我有一个类Person
实现了Comparable
(例如,将personA.height
与personB.height
进行比较),是否可以使用
personA < personB
代替
personA.compareTo(personB) == -1?
这样做有什么问题吗?或者我需要让操作员超负荷工作吗
# 1 楼答案
Java中没有运算符重载。你可能来自C++背景。p>
你必须使用
compareTo
方法# 2 楼答案
这是不可能的,java不会给你操作符重载
但一个更面向对象的选项是在person中添加一个方法
因此,与其写作
你可以写
IMHO更具可读性,因为它隐藏了细节,并用领域语言而不是java细节来表达
# 3 楼答案
不,不可能用
personA < personB
代替。在Java中不能重载运算符另外,我建议你换衣服
到
你现在所拥有的可能对你的班级有用。然而,关于^{} 的约定是,当
personA
小于personB
时,它返回一个负值。负值不一定是-1,如果与其他类一起使用,代码可能会中断。如果有人将类的compareTo()
方法更改为另一个(但仍然兼容)实现,它也可能会崩溃# 4 楼答案
Java没有运算符重载1,因此,是的,存在一个问题:这是不可能的
1当然,内置了一些重载:
+
运算符适用于整型、浮点型和String
型。但您不能定义自己的重载# 5 楼答案
不可能,不可能;Java不支持操作符重载(除了内置的重载)
顺便说一句,与其写
== -1
,不如写< 0
compareTo
只需要返回一个负/零/正值,而不是具体的-1/0/1# 6 楼答案
不,是“<应用于对象时不会编译。此外,还要注意你的测试:
API文档只是说,当对象小于指定的对象时,compareTo()返回一个负整数,不一定是-1。使用
相反