Java:“本地变量可能尚未初始化”不够智能?

考虑以下方法:

void a () { int x; boolean b = false; if (Math.random() < 0.5) { x = 0; b = true; } if (b) x++; } 

x++我得到“局部变量可能尚未初始化”错误。 显然x永远不会被未初始化使用。 除了初始化x之外,有没有办法抑制警告? 谢谢。

不, Java无法检查程序的所有可能代码路径,以确定变量是否已初始化,因此它需要安全路径并发出警告。

所以不,你必须初始化你的变量来摆脱这个。

有一个 :

 void a () { if (Math.random() < 0.5) { int x = 1; } } 

编译器不负责设计和测试算法。 你是。

但也许你应该提出一个更实际的用例。 您的示例并未真正显示您的目标是什么。

你为什么不简单地使用

 void a () { int x; boolean b = false; if (Math.random() < 0.5) { x = 0; b = true; x++; } if (b) { //do something else which does not use x } } 

在代码中为什么要在第一个if块之外使用x,所有涉及x的逻辑都可以在第一个if块中实现,我没有看到你需要使用另一个if块来使用的情况X。

编辑:或您也可以使用:

 void a () { int x; boolean b = (Math.random() < 0.5); if (b) { x=1 //do something } }