繁体   English   中英

比较Java中相同类型的两个对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM