为什么javac抱怨没有初始化变量?
2022-09-03 04:34:24
对于此 Java 代码:
String var;
clazz.doSomething(var);
为什么编译器报告此错误:
变量“var”可能尚未初始化
我以为所有变量或引用都初始化为.为什么需要这样做:null
String var = null;
??
对于此 Java 代码:
String var;
clazz.doSomething(var);
为什么编译器报告此错误:
变量“var”可能尚未初始化
我以为所有变量或引用都初始化为.为什么需要这样做:null
String var = null;
??
这是因为Java非常有帮助(尽可能地)。
它将使用相同的逻辑来捕获您可能错过的一些非常有趣的边缘情况。例如:
int x;
if(cond2)
x=2;
else if(cond3)
x=3;
System.out.println("X was:"+x);
这将失败,因为存在未指定的其他情况。事实是,这里绝对应该指定其他情况,即使它只是一个错误(switch语句中的默认值也是如此:条件)。
有趣的是,你应该从中得到的是,在你弄清楚你实际上必须这样做之前,永远不要初始化你的局部变量。如果你习惯于总是说“int x=0”;你会阻止这个梦幻般的“坏逻辑”检测器运行。此错误多次为我节省了时间。