Предположим, у вас есть класс следующим образом:
static class Contents {
private String contents;
public Contents(String contents) {
this.contents = contents;
}
}
Дать следующий код:
Vector<Contents> v = new Vector<>();
v.add(new Contents("a"));
System.out.println("Contains a: "+v.contains(new Contents("a")));
доходность которого следующий вывод:
Contains a: false
Однако добавление метода equals
к класс Contents
следующим образом:
public boolean equals(Object obj) {
return Objects.equals(this.contents, ((Contents)obj).contents);
}
Урожайность вдруг следующий результат:
Contains a: true
Лучше реализация могла бы выглядеть следующим образом:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass())return false;
final Contents other = (Contents) obj;
if (!Objects.equals(this.contents, other.contents))return false;
return true;
}
Я не вижу каких-либо ошибок здесь, должно быть что-то еще. Если save is true, он будет вводить ваш if-блок. Btw, не пишите 'if (save == true)', просто напишите 'if (save)' –
, каково ваше первое условие if? Вы уверены, что он не входит в предыдущую ветку? –
Не могли бы вы показать полное утверждение 'if-else' – wattostudios