我有以下代码...
import java.util.Random;
public class ThreeArgumentOperator {
private static final Random RANDOM = new Random();
public static void main(String[] args) {
String test;
System.out.println(test = getValue() == null ? "" : test);
}
public static String getValue() {
if (RANDOM.nextBoolean()) {
return "";
} else {
return null;
}
}
}
Eclipse 编译器(我正在使用 Juno)报告以下错误:
局部变量 test 可能尚未初始化
我的问题是:在这种情况下,编译器不应该报告它不能转换boolean
为String
吗?我知道运算符==
优先=
,因此编译器应该抱怨强制转换,而不是抱怨可能没有初始化的值。
当我更改以下行时
System.out.println(test = getValue() == null ? "" : test);
至
System.out.println((test = getValue()) == null ? "" : test);
一切正常。
编辑:我也尝试javac
直接使用编译它。它给出了同样的错误。
error: variable test might not have been initialized
System.out.println(test = getValue() == null ? "" : test);