簡體   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