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