在if语句中声明Java变量类型

在if语句中声明Java变量类型,java,Java,我有两个Java类car和camion(这只是一个示例)。我想根据我的函数输入初始化一个变量“machine”: void printInfo(boolean is_car){ if(is_car) car machine = new car(); else camion machine = new camion(); String info = machine.getIn

我有两个Java类car和camion(这只是一个示例)。我想根据我的函数输入初始化一个变量“machine”:

void printInfo(boolean is_car){
       if(is_car)
                car machine = new car();

       else
                camion machine = new camion();
       
       String info = machine.getInfo();
       String type = machine.type();
       ...

}
似乎我不能在if语句之外使用声明的变量。 有什么解决办法吗?我希望避免在我的函数中使用大量的If语句。

在If块之外声明Vehicle(假设它是car和camion的超级类)

Vehicle machine;
if (is_car) {
    machine = new car();
} else {
    machine = new camion();
}

如果他们有继承关系,你可以稍微改变一下,使之生效。否则,对于强类型语言来说,这将是一种可怕的做法,您应该不惜一切代价避免它。变量将立即超出范围,因此If不允许变量声明(除非包含在块中)。另见