Из документов Java:
"Возможность подкласса переопределять метод позволяет классу наследовать от суперкласса, поведение которого" достаточно близко ", а затем изменять поведение по мере необходимости.Метод переопределения имеет то же имя, число и тип параметров, и тип возвращаемого значения, что и метод, который он переопределяет. Метод переопределения также может возвращать подтип типа, возвращаемого переопределенным методом . Этот подтип называетсяковариантный тип возврата. "
Так как AnswerDocument
расширяет Answer
, возвращая тип AnswerDocument
в методе, который переопределяет метод с типом возврата Answer
, это нормально.
Однако я не думаю, что вы хотите просто позвонить super
здесь, потому что он даст вам список Answer
, и это не похоже на то поведение, которое вы хотите здесь.Поэтому, если вам нужно поведение от super, получите его список Answer
, сделайте ваши преобразования, а затем верните список AnswerDocument
.
@DynamoDBAttribute
@Override
public List<AnswerDocument> getAnswers() {
List<Answer> answerlist = super.getAnswers();
// transform them to AnswerDocument
return answerDocumentList ;
}
В этом примере предполагается, что ваши AnswerDocuments сначала присутствуют как Ответыи затем преобразуются.Если QuestionDocument
не содержит ответов, то метод super не будет вам полезен вообще, и вам придется писать весь код самостоятельно, но вы все равно можете сделать это методом, переопределяющим исходный getAnswers()
,но с типом возврата AnswerDocument
.