我正在尝试创建一个名为Question的同一个自定义对象类型的实例。问题类具有getter函数来返回问题的问题和答案。如果我只创建一个问题对象,一切正常,但如果我在调用getter函数时创建两个具有不同名称和变量的函数,则始终返回最近初始化的Question对象中的值。
这就是我的意思:
Question q1 = new Question("What is the capital of France", "Paris");
Question q2 = new Question("What is the capital of England", "London");
System.out.println(q1.getQuestion());
System.out.println(q2.getQuestion());
在控制台中显示
What is the capital of England
What is the capital of England
我希望能够展示两个不同的问题。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
没有看到我只能猜测的代码,但似乎Question
类有静态变量而不是成员变量。
这就是为什么有些人主张总是用this.question
和this.answer
来表示你的变量,所以你知道你指的是成员变量,而不是任何其他变量。它会很快指出这样的错误。
所以,如果你有
class Question {
private static String question;
private static String answer;
public Question(String q, String a) {
question = q;
answer = a;
}
public String getQuestion() { return question; }
public String getAnswer() { return answer; }
}
删除静态所以它只是
class Question {
private String question;
private String answer;
public Question(String q, String a) {
question = q;
answer = a;
}
public String getQuestion() { return question; }
public String getAnswer() { return answer; }
}
答案 1 :(得分:0)
使用new
运算符时,会确保创建一个新对象。但是,如果在您的类中声明了static
字段,它将在特定类的所有实例中共享。因此,使用static
将导致此行为。