【发布时间】:2015-03-21 04:18:20
【问题描述】:
如何使用“”使 Java 中的两个对象具有可比性 例如
MyObject<String> obj1= new MyObject<String>(“blablabla”, 25);
MyObject<String> obj2= new MyObject<String>(“nannaanana”, 17);
if (obj1 > obj2)
do something.
我已将 MyObject 类头设置为
public class MyObject<T extends Comparable<T>> implements Comparable<MyObject<T>>
并创建了方法 Comp 但我得到的所有收获是现在我可以在对象列表上使用“排序”,但是如何直接将两个对象相互比较?是
if(obj1.compareTo(obj2) > 0)
do something
唯一的办法?
【问题讨论】:
-
“[
compareTo] 是唯一的方法吗?”是的。 -
您不能在 Java 中重载
<或>运算符。 -
在 C# 中,您可以像这样重载运算符。
-
您无法与
>&<进行比较,因为您的对象中可能存在多个变量,Java 不知道您要使用哪个变量进行比较。如果不重写 compareTo 方法,它将按词法顺序比较字符串对象。 -
嗯,
compareTo不是 only 方式——如果需要,您可以定义isLessThan、isGreaterThan等方法,返回 @987654332 @。可以说它们比compareTo更具可读性。
标签: java object operator-overloading comparable