【发布时间】:2019-02-25 13:55:31
【问题描述】:
我正在构建一个小型测验应用程序,并将每个问题的每个答案存储在数据库表中(使用 JPA)。
我想知道是否有一种方法可以通过 for 循环动态获取 getter(例如使用 javascript),而不是必须写出每个 get 方法。
我的代码(其中“答案”是一个类,每个答案有 9 个不同的整数)。
public void parseUserScore(UserAnswers answer) {
Integer[] answers = new Integer[] {
answer.getQ1(),
answer.getQ2(),
answer.getQ3(),
answer.getQ4(),
answer.getQ5(),
answer.getQ6(),
answer.getQ7(),
answer.getQ8(),
answer.getQ9()
};
double totalscore = 0;
Integer answeredQuestions = 0;
for (int i = 0; i < answers.length; i++) {
if (answers[i] > 0) {
answeredQuestions++;
}
totalscore += answers[i];
}
}
我的问题是是否可以通过这样的 foo 循环获取这些答案:
public void parseUserScore(UserAnswers answer) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i < 10; i++) {
String methodname = "getQ" + i.toString();
list.add(i, answer.methodname)
}
}
这会更好,因为我想使用每个问题的索引根据它们各自的类别将它们分开。
【问题讨论】:
-
为什么
UserAnswers不维护一个List<Integer> answers? -
不,因为您的答案不在数组或列表中。您可以使用反射,但这是解决设计问题的糟糕方法。
-
提示:一旦你开始编写代码,将事物命名为 a1、a2、a3,……你就做错了。然后你必须退后一步,弄清楚如何组织你的数据/代码以使用列表/数组。
-
最好对问题使用数组,但我无法使用 JPA 进行映射以将各个列映射到 JPA 中的数组。所以我不得不将每一列映射到一个单独的整数......
标签: java methods metaprogramming