Попытка эффективно проверить, имеет ли новая копия объекта какие-либо другие поля, и если они есть, обновите локальные и запишите это.Если какое-либо из полей изменилось, мне нужно сохранить объект в базе данных.Я не хочу делать этот вызов, если мне не нужно, следовательно, логическое значение.
Я не мог придумать лучший способ сделать это без использования отражения, но я не хочуиспользуйте отражение здесь из-за отсутствия безопасности при поддержке компилятора (будет иметь строковые ссылки на имена полей), и не все поля имеют один и тот же тип (у меня там есть несколько полей Java 8 Instant).
ЧтоЯ действительно хочу избежать учета необходимости помнить, добавлять или вычитать из / в метод синхронизации при изменении полей.Очевидно, что вычитание не имеет большого значения, потому что метод сломается, но добавление страшно, если кто-то не помнит, чтобы обновить новое поле.
public boolean syncWithFieldsFrom(User currentUser) {
boolean doesUserNeedUpdating = false;
if (!StringUtils.equals(email, currentUser.email)) {
email = currentUser.email;
doesUserNeedUpdating = true;
}
if (!StringUtils.equals(firstName, currentUser.firstName)) {
firstName = currentUser.firstName;
doesUserNeedUpdating = true;
}
if (!StringUtils.equals(lastName, currentUser.lastName)) {
lastName = currentUser.lastName;
doesUserNeedUpdating = true;
}
if (!StringUtils.equals(fullName, currentUser.fullName)) {
fullName = currentUser.fullName;
doesUserNeedUpdating = true;
}
return doesUserNeedUpdating;
}