【发布时间】:2017-03-09 09:34:12
【问题描述】:
我不太确定这是如何工作的,但如果我想为类的对象提供更多或更少变量的选项,这是否适用于这样的多个构造函数?
假设我想创建一个多项选择题,但是我不知道我的用户想输入多少个答案,也许是 2,3,4,5,6?所以为此:
public class Quiz {
private int counter;
private String question;
private String answer1;
private String answer2;
private String answer3;
private String answer4;
private String answer5;
private String answer6;
private String rightAnswer;
public Quiz(int counter,String question, String answer1, String answer2, String rightAnswer){
super();
this.counter = counter;
this.question = question;
this.answer1 = answer1;
this.answer2 = answer2;
this.rightAnswer = rightAnswer;
}
public Quiz(int counter, String question, String answer1, String answer2, String answer3, String rightAnswer) {
super();
this.counter = counter;
this.question = question;
this.answer1 = answer1;
this.answer2 = answer2;
this.answer3 = answer3;
this.rightAnswer = rightAnswer;
}
public Quiz(int counter, String question, String answer1, String answer2, String answer3, String answer4,
String rightAnswer) {
super();
this.counter = counter;
this.question = question;
this.answer1 = answer1;
this.answer2 = answer2;
this.answer3 = answer3;
this.answer4 = answer4;
this.rightAnswer = rightAnswer;
}
//...more options
也许我可以用某种枚举或开关做 1 个构造函数? 归根结底,在尝试了这种方法之后,出于某种原因,将其放入哈希映射中,然后将其序列化到文件中在那里。我对问题是什么感到有些困惑,也许这与我的 toString 覆盖有关,但无论如何,请告诉我这个问题,这样我就不必担心一个令人困惑的问题。
【问题讨论】:
-
你应该查找“构造函数重载”
-
如果你要重用值,你可以使用 this(args); 从另一个构造函数调用一个构造函数;
-
我可能弄错了,但不是所有这些多参数混淆,为什么不把所有答案放在 arraylist 或其他东西中......我觉得你的逻辑和方法很奇怪...... .
-
无需调用super Quiz类隐式扩展对象类
-
“将其放入哈希映射然后将其序列化为文件不起作用” - 请注意“这不起作用”很少有帮助。如果您希望我们提供任何帮助,您应该告诉我们它在哪些方面不起作用、您到底做了什么、您期望什么以及您得到了什么(任何错误、不同的结果等)。
标签: java multiple-constructors