Boolean isValid = true;
String message = "prefix" + isValid != null ? " midfix " : "suffix";
System.out.println(message);
您认为这是什么结果?我期待prefix midfix
。但实际上结果是:midfix
!
这是java库本身的错误(1.7)吗?我应该为此报告错误吗?或者这是否按预期工作,我在滥用它?
可以使用以下方式“修复”:
String message = "prefix" + (isValid != null ? " midfix " : "suffix");
但是如果没有支架,反正不应该有效吗?
答案 0 :(得分:9)
评估为:
String message = (("prefix" + isValid) != null) ? " midfix " : "suffix";
相当于:
String message = ("prefixtrue" != null) ? " midfix " : "suffix";
因此" midfix"归还。
如果你愿意"前缀midfix"要返回使用括号:
String message = "prefix" + (isValid != null ? " midfix " : "suffix");