2014-10-31 113 views
2

我有一個IPAdress.java類,它有一個帶int數組的存儲IP地址的構造函數。我必須檢查作爲參數傳遞的對象是否等於存儲在對象中的IP地址。 我想是這樣的:檢查對象等於存儲在java對象中的數據

public boolean isTheSame(IPAdress p){ 
     if(????) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

而且我在那裏我創建對象

public static IPAdress fromString(String ipStr) { 
    int[] arr = new int[4]; 
    String[] split = ipStr.split("\\."); 
    for(int i=0;i<4;i++){ 
     arr[i]=Integer.parseInt(split[i]); 
     System.out.println(arr[i]); 
    } 
    IPAdress p = new IPAdress (arr); 
    return p; 
} 
+1

向我們展示您的'IPAdress'類。 – 2014-10-31 10:49:35

回答

4

假設你的另一種方法獲得這項內部表示,這樣的方式(例如,讓我們假設你的方法被調用asArray(),你可以使用java.util.Arrays.equals(int[], int[])):

public boolean isTheSame(IPAdress p) { 
    return Arrays.equals(asArray(), p.asArray()); 
} 

編輯:
順便說一句,請注意,這樣做的規範Java的方式將覆蓋eauls(Object)

@Override 
public boolean equals(Object o) { 
    if (!(o instanceof IPAddress) { 
     return false; 
    } 
    return Arrays.equals(asArray(), ((IPAddress) o).asArray()); 
} 
1

擺脫你isTheSame()方法。只需使用爲相同目的而設計的內置等值方法。

覆蓋IPAdress類中的equals方法,並提供您的實現以檢查相等性。對於例如:如果兩個對象的IP是同一個等返回true ...

1

這樣你就可以實現接口可比,你類ip地址是: 公共類IPAddess實現可比,那麼你就應該實現的方法

@Override 
public int compareTo(IPAddress ipAddress) { } 
@Override 
public boolean equals(Object obj) { } 
A class that overrides equals must also override hashCode. 
@Override 
public int hashCode()