Вы можете использовать отражение :
try {
Method m = MyClass.class.getDeclaredMethod("Question"+questionNum);
m.invoke(this);
} catch (NoSuchMethodException e) {
// Handle
}
Но вы должны правильно обработать исключение, потому что оно, скорее всего, потерпит неудачу в тот или иной день.
Вы можететакже используйте enum
для определения каждого поведения и вызова соответствующего:
private static enum EnQuestion {
Question1 {
public void run(MyClass instance) {
// ...
}
},
Question2 {
...
},
...
QuestionN {
...
};
public void run(MyClass instance);
}
Перечисление должно быть статическим, чтобы вы не могли получить доступ к MyClass
защищенным / закрытым полям иметоды.
Затем вызовите его:
EnQuestion.values()[numQuestion].run(this);