我有一个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语句没有按原样检查。 我该如何解决这个问题?
答案 0 :(得分:3)
您的尝试存在许多问题。
[修改 - 感谢Tim Biegeleisen查看此内容]
首先,您在this
上下文中引用static
,而类范围的上下文不能自己知道特定实例。
其次,==
用于比较对象引用。您应该使用equals
代替。
但在这种情况下,它可能不起作用,具体取决于方法bigger
的实现。
我强烈建议改为实施Comparable<MyObject>
。
将MyObject
替换为相关对象的类型,或者替换所有要比较的对象的界面。
可以使用compareTo(T o)
方法中的逻辑实现bigger
方法,等等!
按合同,它应该返回:
负整数,零或正整数,因为此对象小于,等于或大于指定对象
请参阅API here。
答案 1 :(得分:3)
您不能在main方法之类的静态方法中使用它。您只能在实例方法中使用它。
答案 2 :(得分:3)
使您的对象类实现Comparable
并覆盖compareTo
方法,这样您就可以定义评估任何类型的对象更大的条件。