我有以下的代码片段...
Eclipse编译器(我使用Juno)报告以下错误:
本地变量test可能未初始化
我的问题是: 在这种情况下,编译器不应该报告无法将布尔值转换为字符串吗?我理解操作符==优先于=,因此编译器应该抱怨强制类型转换,而不是可能未初始化的值。
当我更改以下行时:
System.out.println(test = getValue() == null ? "" : test);
到
System.out.println((test = getValue()) == null ? "" : test);
一切正常。
编辑:我也尝试直接使用javac编译它。 它给出相同的错误。
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可能未初始化
我的问题是: 在这种情况下,编译器不应该报告无法将布尔值转换为字符串吗?我理解操作符==优先于=,因此编译器应该抱怨强制类型转换,而不是可能未初始化的值。
当我更改以下行时:
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);