我很担心这个结构:
String out = "Text " + (obj==null ? "" : obj.getStr()+" ") + "text continues.";
一切都有效,但我认为这很难看。也许我太挑剔了..
无论如何,我问,有没有更好的方法来做这种事情?
或者这是普遍接受的技术吗?
答案 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.";