如何从if-else语句创建/实例化对象?

时间:2014-11-02 17:42:51

标签: java class object inheritance if-statement

由于某种原因,以下代码在尝试根据if-else语句的结果从不同的子类创建对象时不起作用:

if (option == 1) {

     UndergradTA student = new UndergradTA();
     student.setIsUnderGrad(true);

} else if (option == 2) {

     GradTA student = new GradTA();
     student.setIsGrad(true);
}

当我尝试使用"学生"在后来的主要方法中,它不会允许我,说"学生无法解决"。

2 个答案:

答案 0 :(得分:5)

将您的密码更改为:

UndergradTA student = null;
GradTA stud = null;

if (option == 1) {

    student = new UndergradTA();
    student.setIsUnderGrad(true);

} else if (option == 2) {

    stud = new GradTA();
    stud.setIsGrad(true);
}

答案 1 :(得分:2)

student变量在if/else范围内声明,而不是在外部,因此您不能在这些代码块之外使用它。

如果UndergradTAGradTA有一个共同的超类或接口,那么在外面声明变量并相应地使用它:

Student student = null;
if (option==1) {
    student = new UndergradTA();
    //cumbersome
    student.setIsUnderGrad(true);
} else if(option==2) {
    student = new GradTA();
    //cumbersome
    student.setIsGrad(true);
}
student.someMEthod(...);