字符串的三元运算符 - 任何更好的方式?

时间:2014-04-04 16:23:39

标签: java syntax styles

我很担心这个结构:

String out = "Text " + (obj==null ? "" : obj.getStr()+" ") + "text continues.";

一切都有效,但我认为这很难看。也许我太挑剔了..

无论如何,我问,有没有更好的方法来做这种事情?
或者这是普遍接受的技术吗?

4 个答案:

答案 0 :(得分:3)

使用StringBuilder

final StringBuilder sb = new StringBuilder("Text ");
if (obj != null)
    sb.append(obj.getStr()).append(' ');
final String out = sb.append("text continues.").toString();

另外,为什么.getStr()?不obj实施.toString()


请注意,如果obj确实实施了.toString(),那么您可以做得比使用Guava的Joiner更好“

private static final Joiner JOINER = Joiner.on(" ").skipNulls();

//

final String out = JOINER.join("Text", obj, "text continues.");

但最终,这是一个风格问题。

答案 1 :(得分:1)

那么你可以从格式中分离逻辑,开始于:

String out = String.format("Text %stextcontinues",
                           obj == null ? "" : obj.getStr() + " ");

答案 2 :(得分:0)

我更喜欢它,因为它很简洁。

另一种方式是普通的if-then-else:

String toAdd = "";
if(object != null) {
    obj.getStr() + " ";
}
String out = "Text " + toAdd  + "text continues.";

答案 3 :(得分:0)

String out = "Text text continues.";
if (obj != null)
   out = "Text " + obj.getStr() + " text continues.";