从以下 3 种不同的实现中,从可读性、性能等角度来看,哪一种看起来是一个不错的候选方案?
示例#1:
@Override
public String toString() {
return "GuiTemplateCriteriaImpl [appTitle=" + appTitle
+ ", button1Text=" + button1Text + ", button2Text="
+ button2Text + ", defaultMessageText=" + defaultMessageText
+ ", rootFolder=" + rootFolder + ", supportedFileExt="
+ supportedFileExt + ", list1ToolTipText=" + list1ToolTipText
+ ", list2ToolTipText=" + list2ToolTipText + "]";
}
示例#2:
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("GuiTemplateCriteriaImpl")
.append("[")
.append(" appTitle=" + appTitle)
.append(", button1Text=" + button1Text)
.append(", button2Text=" + button2Text)
.append(", defaultMessageText=" + defaultMessageText)
.append(", rootFolder=" + rootFolder)
.append(", supportedFileExt=" + supportedFileExt)
.append(", list1ToolTipText=" + list1ToolTipText)
.append(", list2ToolTipText=" + list2ToolTipText)
.append("]");
return builder.toString();
}
示例#3:
@Override
public String toString() {
return new StringBuilder()
.append("GuiTemplateCriteriaImpl")
.append("[")
.append(" appTitle=" + appTitle)
.append(", button1Text=" + button1Text)
.append(", button2Text=" + button2Text)
.append(", defaultMessageText=" + defaultMessageText)
.append(", rootFolder=" + rootFolder)
.append(", supportedFileExt=" + supportedFileExt)
.append(", list1ToolTipText=" + list1ToolTipText)
.append(", list2ToolTipText=" + list2ToolTipText)
.append("]")
.toString();
}
围绕此方法还有其他最佳实践吗?请指教
谢谢!
最佳答案
示例 1 将在幕后为您使用单个 StringBuilder
。示例 2 和 3 将编译为相同的字节码,但使用更多的 StringBuilder
,当使用非文字 String
时,每个字符串连接一个,但开销 对于这种情况可以忽略。针对您的具体情况,使用能够简化代码可读性和可维护性的方法。
IMO 你应该使用选项#4:
@Override
public String toString() {
return "GuiTemplateCriteriaImpl"
+ "["
+" appTitle=" + appTitle
+ ", button1Text=" + button1Text
+ ", button2Text=" + button2Text
+ ", defaultMessageText=" + defaultMessageText
+ ", rootFolder=" + rootFolder
+ ", supportedFileExt=" + supportedFileExt
+ ", list1ToolTipText=" + list1ToolTipText
+ ", list2ToolTipText=" + list2ToolTipText
+ "]";
}
关于java - 首选 toString() 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30441993/