[英]Compare two objects of the same type in Java
我有一个ObjectX类,以及同一个类objectX1和objectX2的两个对象。
我也有一个检查该类的两个对象中哪个最大的方法。 该类的每个对象都包含大量存储在arrayList中的对象。
这是方法声明:
public ObjectX bigger(ObjectX objectX2);
该方法工作得很好,它从类本身获取了一个对象之外的另一个对象,并返回哪个是最大的。
我的问题是,当我尝试在if语句中调用该方法时,如下所示:
public static void main(String[] args) {
if((this.bigger(object2)) == this)
System.out.println("First is bigger!");
else if((this.bigger(object2)) == object2)
System.out.println("Second is bigger!");
else
System.out.println("The objects are equal!");
}
if语句未按预期进行检查。 我该如何解决?
您的尝试有很多问题。
[ 编辑 -感谢Tim Biegeleisen发现此问题]
首先,您在static
上下文中引用this
,而类作用域上下文本身无法知道特定实例。
其次, ==
用于比较对象引用 。 您应该改用equals
。
但在这种情况下,它可能无法正常工作,这取决于你的实现方法的bigger
。
我强烈建议改而实现Comparable<MyObject>
。
将MyObject
替换为相关对象的类型,或将要与之进行比较的所有对象的某个接口替换。
compareTo(T o)
方法可以用bigger
方法中的逻辑来实现,甚至更多!
按照合同,它应该返回:
负整数,零或正整数,因为此对象小于,等于或大于指定的对象
在此处查看API。
您不能在像main方法这样的静态方法中使用它。 您只能在实例方法中使用它。
使您的对象类实现Comparable
并覆盖compareTo
方法,这样您就可以定义评估任何类型的对象较大的条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.