2 回答
TA贡献1844条经验 获得超8个赞
我建议不要将对象添加到构造函数内的Map中。一个原因是单一责任原则。你的构造函数将执行 2 项操作(初始化对象并将其添加到 Map)。这是一种不好的做法,特别是因为方法的名称(在你的例子中是构造函数)没有清楚地说明它的作用。另一个原因是在构造函数中使用“this”。您应该非常小心,因为这可能会导致问题非常难以调试。原因是:当您仍在构造函数中时,您的对象(因此“this”)尚未完全初始化。因此,您正在将未完全初始化为参数的对象传递给方法。正如我所说,这可能会导致大问题。
如果你真的需要一次性完成所有操作,你可以在你的类中创建一个静态方法,如下所示:
public static addQuestion(String que, String[] ans, int sol, double prio){
int key = Database.size();
Database.put(key, new Question (que, ans, sol, prio));
}
然后,您可以这样称呼它:
Question.addQuestion("What is the right answer?",
new String[] { "1", "2", "3", "4" }, 3, 1.0);
TA贡献2019条经验 获得超9个赞
从您的评论中,要自动将其插入到地图中,请使用:
public class Question {
static int keyCount;
public Question(String que, String[] ans, int sol, double prio){
this.question = que;
this.answers = ans;
this.solution = sol;
this.priority = prio;
Database.put(++keyCount, this);
}
}
在这里,每次创建新对象时,我们都会在地图中插入一个条目。
引用当前创建的对象。
this
静态变量用于在每次创建对象时递增键的值。
keyCount
添加回答
举报