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

时间:2015-03-23 11:26:37

标签: 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语句没有按原样检查。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您的尝试存在许多问题。

[修改 - 感谢Tim Biegeleisen查看此内容]

首先,您在this上下文中引用static,而类范围的上下文不能自己知道特定实例。

其次,==用于比较对象引用。您应该使用equals代替。

但在这种情况下,它可能不起作用,具体取决于方法bigger的实现。

我强烈建议改为实施Comparable<MyObject>

MyObject替换为相关对象的类型,或者替换所有要比较的对象的界面。

可以使用compareTo(T o)方法中的逻辑实现bigger方法,等等!

按合同,它应该返回:

  

负整数,零或正整数,因为此对象小于,等于或大于指定对象

请参阅API here

答案 1 :(得分:3)

您不能在main方法之类的静态方法中使用它。您只能在实例方法中使用它。

答案 2 :(得分:3)

使您的对象类实现Comparable并覆盖compareTo方法,这样您就可以定义评估任何类型的对象更大的条件。