2 回答

TA貢獻1844條經(jīng)驗 獲得超8個贊
我建議不要將對象添加到構(gòu)造函數(shù)內(nèi)的Map中。一個原因是單一責任原則。你的構(gòu)造函數(shù)將執(zhí)行 2 項操作(初始化對象并將其添加到 Map)。這是一種不好的做法,特別是因為方法的名稱(在你的例子中是構(gòu)造函數(shù))沒有清楚地說明它的作用。另一個原因是在構(gòu)造函數(shù)中使用“this”。您應該非常小心,因為這可能會導致問題非常難以調(diào)試。原因是:當您仍在構(gòu)造函數(shù)中時,您的對象(因此“this”)尚未完全初始化。因此,您正在將未完全初始化為參數(shù)的對象傳遞給方法。正如我所說,這可能會導致大問題。
如果你真的需要一次性完成所有操作,你可以在你的類中創(chuàng)建一個靜態(tài)方法,如下所示:
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條經(jīng)驗 獲得超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);
}
}
在這里,每次創(chuàng)建新對象時,我們都會在地圖中插入一個條目。
引用當前創(chuàng)建的對象。
this
靜態(tài)變量用于在每次創(chuàng)建對象時遞增鍵的值。
keyCount
添加回答
舉報