2014-10-31 3 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». –

ответ

4

Предполагая, что вы так способ получить внутреннее представление (например, давайте предположим, что ваш метод называется asArray(), вы можете использовать java.util.Arrays.equals(int[], int[])):

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

EDIT:
КСТАТИ Обратите внимание, что канонический Java способ сделать это было бы переопределить eauls(Object):

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

Избавьтесь от метода isTheSame(). Просто используйте метод inbuilt equals, который предназначен для той же цели.

Переопределите метод equals в классе IPAdress и предоставите свою реализацию там, чтобы проверить равенство. Для экс: возвращает истину, если оба объекты внутрибрюшинно это же и т.д ...

1

Таким образом, вы можете реализовать интерфейс Сопоставимые, You класс IPAddress будет: общественного класса 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()