我有一个IPAdress.java类,它有一个带有int数组的构造函数来存储IP地址。我必须检查作为参数传递的对象是否等于存储在对象中的IP地址。 我试过这样的事情:
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;
}
答案 0 :(得分: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 :(得分:1)
摆脱您的isTheSame()
方法。只需使用为同一目的而设计的内置equals方法。
覆盖IPAdress类中的equals方法,并在那里提供实现以检查相等性。例如:如果两个对象ip相同,则返回true ...
答案 2 :(得分:1)
所以你可以实现Comparable接口,你的类IPAddress将是: 公共类IPAddess实现Comparable,那么你应该实现方法
@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()