2013-09-03 3 views
0

Я пытаюсь создать метод equals, который сравнивает два объекта. Дело в том, что я немного новичок в этом, поэтому я постараюсь как можно проще объяснить свою цель.Как создать метод equals, который сравнивает два массива объектов класса?

public class A { 
... 
} 

public class B { 
private A[] arr = new A[10]; 

public boolean equals(A[] temp) { 
//compare 
} 
} 

Предположим, что приведенный выше код является кратким изложением того, что у меня есть. Теперь предположим, что у меня было: arr.equals(Obj) Obj являющийся другим объектом A []. Теперь в моей инструкции equals я хочу ссылаться на исходный массив arr, как мне это сделать?

Например, предположим, что я хотел сравнить длину arr с длиной темпа (иначе длина Obj), как бы я это сделал? Я знаю, что это будет что-то вроде (temp.length == arr.length), но как мне получить доступ к arr, когда я передаю его, выполнив arr.equals(obj)?

EDIT: Просто уточнить, предположим, что объекты не простые массивы. Так, например, класс A может иметь имя, тип (обе строки) и, возможно, количество (int), поэтому я не смог бы просто сравнить их, как два обычных массива.

Спасибо!

+1

['Массивы # равно (...)'] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html)? – MadProgrammer

ответ

0

Используйте ключевое слово this, которое всегда представляет объект, к которому вы применяете метод, (непосредственно перед точкой). Например:

public boolean equals(A[] temp) { 
     return this.length == temp.length ; 
    } 

Теперь, в данном конкретном случае вашего кода, вы не определяете метод equals как часть класса A, но класс B, экземпляры которого содержит arr. Затем раствор будет:

public boolean equals(A[] temp) { 
     return this.arr.length == temp.length ; 
    } 
+0

это.arr.length? –

+0

Это была моя оригинальная идея, у меня было (this.length == temp.length), но Eclipse говорит мне, что «длина не может быть разрешена или не является полем». для этой длины. Это нормально? Я все еще могу скомпилировать. –

+0

this.length не определен в B, в B вы определили arr, а arr имеет длину, если вы снова прочтете ответ Марио Росси, вы увидите, что this.length является общим способом представления проблемы, а затем он показывает конкретный дело для вас. – porfiriopartida

0

Вы можете использовать java.util.Arrays.equals (Object [] а, Object [] a2), который проверяет, если два указанных массивов объектов равны друг другу

0

Напишите равен mwthod в вашем class A

public class A { 
... 
//Override equals method. 

} 

Теперь, если вы хотите, чтобы сравнить 2 массивы class A вы можете просто использовать java.utils.Arrays.equals(A a1[], A a2[]);

Вы должны переопределить метод equals в class A coz java.utils.Arrays.equals внутренне использует класс A равным.

Описание: example, пройдите через него.

Смежные вопросы