Я из C ++ фона и только начал Java сегодня. Скажем, у меня есть класс с парой членов данных. Например:
public class Person {
//Constructors/Destructor
public Person(String strFirstName, String strLastName) {
m_strFirstName = strFirstName;
m_strLastName = strLastName;
m_strFullName = m_strFirstName + m_strLastName;
}
//Getters
public String GetFullName() { return m_strFullName; }
public String GetFirstName() { return m_strFirstName; }
public String GetLastName() { return m_strLastName; }
//Private Data Members
private String m_strFirstName;
private String m_strLastName;
private String m_strFullName;
}
Теперь допустим, я делаю это:
Person john = new Person("john", "doe");
Person johndoe = new Person("john", "doe");
if (john == johndoe) {
System.out.println("They are Equal");
} else {
System.out.println("They are NOT Equal");
}
Здесь результат «Они НЕ равны». Я понимаю, что это потому, что Java сравнивает ссылки (адреса памяти), и поскольку они находятся в разных местах памяти, тест не пройден. Я читал, что Java не поддерживает перегрузку операторов, поэтому я не могу перегрузить оператор ==, поэтому есть ли метод, который я бы переопределил для реализации моего членного сравнения? Метод object.equals выглядел многообещающе, но я читал, что не рекомендуется переопределять этот метод.
UPDATE:
Хорошо, я убежден, что переопределение равно ОК! Я не могу найти ту статью, в которой говорится, что это плохо. Спасибо за помощь, у меня, вероятно, будет больше вопросов по мере изучения Java!