toString 用于 debugging/logging classes/objects 时应该如何格式化?

What should toString be formatted like when used for debugging/logging classes/objects?

我覆盖了 toString 方法来打印出我的 class 的成员。大型项目使用的通用格式是什么... classname():变量名1=变量值1逗号分隔?

任何指向某些开放源代码的链接都很棒。

此外,看起来 .NET 确实有针对此任务的特定方法:

[DebuggerDisplay("{Name} [date={Date}, value={Value}]")]
public class MyClass {

在java中,CustomClass.toString用于日志记录?

重写 toString class 的目的是根据需要对其进行格式化。是的,格式通常是一个对象或 class 名称,其中包含您希望显示的所有字段的逗号分隔列表,并附有字段名称(例如“date=”datevalue)。如果您编写方法来显示您正在测试的变量,则 toString 是一个非常有用的调试工具。

这完全取决于所讨论的 class 以及您认为相关的内容。

由于调试器可以向您显示所有字段及其值,因此您实际上并不需要 toString()。它应该是相关信息的摘要,具体取决于预期目的。

示例:A Person class 包含 idfirstNamelastNamephoneNumber、[=19= 等字段], addressLine2, city, state, zipcode.

toString() 结果中显示 所有 这些值是否相关?如果是,请使用如下格式:

Person[id=1,firstName=John,lastName=Doe,phoneNumber=555-555-0127,addressLine1=123 Main St.,city=Queens,state=NY,zipcode=11354]

但是,如果你有一个 List<Person>:

,想想结果
[Person[id=1,firstName=John,lastName=Doe,phoneNumber=555-555-0127,addressLine1=123 Main St.,city=Queens,state=NY,zipcode=11354], Person[id=2,firstName=Jane,lastName=Smith,...]]

如果 toString() 方法只是帮助 识别 对象,例如只是名字(名字+姓氏),也许 id:

[John Doe (1), Jane Smith (2)]

所以,正如我在开头所说:这取决于。