java - 首选 toString() 实现?

标签 java tostring stringbuilder

从以下 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/

相关文章:

Java正则表达式查找方法为匹配罗马数字返回false

Java:获取类的属性以构造字符串表示

java - 第二次单击鼠标后,JTree 节点会更改其表示形式

windows-8 - C++/CX:Platform::String 与 std::wstring

java - 对于最多 9-10 步的字符串连接,是否有比 StringBuilder 更快的方法?

java - 如何在Java中生成 Elasticsearch 嵌套聚合?

java - 无法将 Webelement 列表中的一个元素与数组列表元素相匹配

java - 使用正则表达式设计捕获十六进制数或整数

java - 从卡的 toString() 获取错误的字符串

java - 空格不会被删除