У меня есть функция в одном из моих классов, которая сравнивает себя с другим экземпляром того же класса - и выясняет, какие переменные отличаются. Это делается для минимизации сетевой нагрузки с основной базой данных (путем загрузки только тех данных, которые необходимо загрузить, вместо загрузки всего объекта).Сравнение двух объектов, любое из которых может быть нулевым
Для этого я пытаюсь использовать функцию object.equals()
для сравнения двух объектов.
Вскоре я обнаружил, что object.equals()
не обрабатывает null
, и после прочтения this question, я понимаю, почему.
Так пример моего разбитого кода выглядит следующим образом:
public class MyObject {
String myString;
String myString2;
public String getChangedVars(MyObject comparisonObj) {
ArrayList<String> changedVars = new ArrayList<String>();
if (!this.myString.equals(comparisonObj.myString))
changedVars.add("myString");
if (!this.myString2.equals(comparisonObj.myString2))
changedVars.add("myString2");
return changedVars.toString();
}
}
Мой вопрос - на том основании, что либо одна из переменных сравниваемых может быть нулевым, что простой способ сравнить две переменные, избегая NullPointerException
?
Edit: Просто проверка нуль на обоих объектах первый не работает хорошо, как я еще хочу сравнить, если объект имеет ссылку или нет. Например, если один элемент равен null
, а другой нет, я хочу, чтобы это разрешилось до true
, так как переменная изменилась.
Сначала проверьте на 'null' на обоих объектах. –
Java 7: java.util.Objects.equals (Object a, Object b) – Seelenvirtuose