toString 实现的最佳标准样式是什么?[已关闭]

2022-08-30 12:03:50

我们有很多对象,我们希望实现对象的简单输出属性。其中一些属性本身可能是复杂的对象。toString

是否有任何标准,或者只是一种风格的最佳实践?我在想这样的事情:

[SimpleClassName] { prop1:value, prop2:value }

在这种情况下,嵌套值将如下所示:

[SimpleClassName] { prop1:value, prop2:[NestedObject] { prop3:value}}

我们正在使用Java,但我发现自己在大多数语言中都问了同样的问题!


答案 1

我认为GuavaMoreObjects.toStringHelper()产生的格式非常好,但主要只是使用一些一致的格式:

public String toString() {
  return Objects.toStringHelper(this)
      .add("prop1", prop1)
      .add("prop2", prop2)
      .toString();
}

// Produces "SimpleClassName{prop1=foo, prop2=bar}"

答案 2

就个人而言,我发现混合并且不那么容易立即获得层次结构的视图。[]{}

我喜欢这种格式(我已经看到它在很多地方被使用):

SimpleClassName[prop1=value, prop2=value]
SimpleClassName[prop1=value, prop2=NestedObject[prop3=value]]

还可以添加一个标识符,例如 commons-lang 的默认样式(使用它自己的示例):@ToStringBuilder

Person@182f0db[name=John Doe,age=33,smoker=false]