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");
但是无论如何,如果没有刹车,那该不行吗?
最佳答案
评估为:
String message = (("prefix" + isValid) != null) ? " midfix " : "suffix";
等效于:
String message = ("prefixtrue" != null) ? " midfix " : "suffix";
因此,将返回“ midfix”。
如果希望返回“前缀中缀”,请使用括号:
String message = "prefix" + (isValid != null ? " midfix " : "suffix");