public
abstract
class
Answer {
private
final
String text;
public
Answer(String text) {
this
.text = text;
}
public
String getText() {
return
text;
}
}
class
CorrectAnswer
extends
Answer {
public
CorrectAnswer(String text) {
super
(text);
}
}
class
Distractor
extends
Answer {
public
Distractor(String text) {
super
(text);
}
}
public
class
TtsQuestion {
private
final
List<Answer> answers;
private
final
QuestionCallback callback;
public
TtsQuestion(List<Answer> answers, QuestionCallback callback) {
this
.answers = answers;
this
.callback = callback;
}
public
void
selectAnswer(
int
choice) {
final
Answer chosenAnswer = answers.get(choice);
if
(chosenAnswer ==
null
)
throw
new
IllegalArgumentException(
"Cannot find relevant answer"
);
if
(chosenAnswer
instanceof
CorrectAnswer) {
callback.onSelectCorrectAnswer();
return
;
}
callback.onSelectDistractor((Distractor) chosenAnswer);
}
}
interface
QuestionCallback {
void
onSelectCorrectAnswer();
void
onSelectDistractor(Distractor distractor);
}
final
TtsQuestion question =
new
TtsQuestion(Arrays.asList(
new
CorrectAnswer(
"Banana"
),
new
Distractor(
"Lemon"
),
new
Distractor(
"Apple"
),
new
Distractor(
"Grape"
)
),
new
QuestionCallback() {
@Override
public
void
onSelectCorrectAnswer() {
System.out.println(
"Update question"
);
}
@Override
public
void
onSelectDistractor(Distractor distractor) {
System.out.println(
"Oh No, Selected wrong answer!!!"
);
}
});
question.selectAnswer(
0
);
}