gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:00:56 25 4
gpt4 key购买 nike

我有一个类 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为了发现这个]

首先,您引用thisstatic上下文,而类作用域的上下文无法自行了解特定实例。

其次,==用于比较对象引用。你应该使用 equals反而。

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

我强烈建议实现 Comparable<MyObject>反而。

替换MyObject使用所讨论对象的类型,或者您要比较的所有对象的某个接口(interface)。

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

根据契约(Contract),它应该返回:

a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object

参见 API here .

关于java - Java比较两个相同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29209066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com