Я создаю класс с именем Question
.У этого класса есть ответы, поэтому я хочу иметь возможность вернуть список ответов, прикрепленных к нему.
Однако, если пользователь вносит изменения в ответ, я хочу, чтобы пользователь вызвал метод обновления, чтобы я мог выполнить дополнительные проверки и т. Д. Сейчас, если пользователь получает список ответов, он все еще может изменитьответьте, сказав question.getAnswers().get(0).setDescription("BLAH BLAH").
Так что я подумал о том, чтобы вернуть копию каждого ответа, и позволить пользователю изменить это, и он должен объединить / обновить его обратно к вопросу.При таком подходе я могу гарантировать, что ответ верен, но метод ответа равно основывается на поле description
и correct
, а не на поле id
, потому что я использую JPA.Если пользователь изменяет ответ с помощью этого подхода, метод обновления не найдет ответ, потому что поле описания изменилось, и оно больше не равно, поэтому оно не находит его в списке.
Любые советы?
public void updateAnswer(Answer answer) {
int index = answers.indexOf(answer);
answers.set(index, answer);
}
public List<Answer> getAnswers() {
return Collections.unmodifiableList(answers);
}
@Test
public void shouldUpdateAnswerInQuestion() {
// Get first answer, make an update on the description
// and then update answer on question.
Answer answerThatWillBeUpdated = question.getAnswers().get(0);
String updatedAnswerDescription = "Hey, it is now updated!";
answerThatWillBeUpdated.setDescription(updatedAnswerDescription);
question.updateAnswer(answerThatWillBeUpdated);
// After updating check that the answer in the list is equal
// to the answer updated.
Answer answerFromList = question.getAnswers().get(0);
assertEquals(answerThatWillBeUpdated, answerFromList);
}
Класс ответа:
public class Answer {
private long id;
private String description;
private Boolean correct;
...
}