字符串值未显示两个变量值
我想将 String 值设置为fileName + ".yaml" + comment != null ? comment : "" + date.toString()fileName 和 comment 类型为 String 的地方,但表达式不显示 filenema.yaml 和日期,但仅显示注释,如果该值不为空。我的表达有什么问题?
回答
我强烈怀疑这个问题是优先的。我希望它被视为:
String value = (fileName + ".yaml" + comment) != null ? comment : "" + date.toString();
第一个表达式永远不会为空,因此它将始终采用条件运算符的第二个操作数而不是第三个。即便如此,我认为代码在优先级方面还不清楚......我肯定会使其更加明确。
我怀疑您实际上希望它解析为:
String value = fileName + ".yaml" + (comment != null ? comment : "") + date.toString();
......所以明确地说。请注意,您不需要toString()调用 - 这是隐式的,因为您使用的是字符串连接。所以你可以只拥有:
String value = fileName + ".yaml" + (comment != null ? comment : "") + date;
(我怀疑有更简单的方法可以用字符串格式来表达这一点,但它至少应该做你想做的。)
另一种选择是将条件运算符移动到单独的语句中:
String commentOrEmpty = comment == null ? "" : comment;
String value = fileName + ".yaml" + commentOrEmpty + date;