如何在 Java 中重写 toString() 方法?

2024 年 9 月 10 日 | 阅读 3 分钟

任何 Java 对象的 toString() 方法都会返回该对象的字符串表示形式。默认情况下,此方法会生成一个包含对象类名、“@”符号以及其十六进制哈希码的字符串。但是,在某些情况下,您可能希望为对象提供更有用的字符串表示。

为什么重写 toString() 方法?

任何 Java 对象的 toString() 方法都会返回该对象的字符串表示形式。此方法通常会生成一个包含对象类名、“@”符号以及对象十六进制格式哈希码的字符串。然而,这种默认表示可能并不总是很有用。

例如,考虑一个具有 name 和 age 字段的 Person 类。如果您尝试打印此类的实例,toString() 方法的默认输出如下所示:

由于此字符串未提供有关人的姓名或年龄的任何信息,因此很难确定对象代表什么。可以重写 toString() 方法并定义自定义字符串表示形式,为 Person 对象提供更有意义的表示。

重写 toString() 方法的最佳实践

以下是在 Java 中重写 toString() 方法时需要牢记的一些最佳实践:

  • 在字符串表示中填充所有相关数据。请确保包含与您的应用程序相关的所有数据,因为 toString() 方法的目的是创建对象的有意义的表示。
  • 坚持标准格式。对于属于同一类的所有对象,请使用相同的格式。这样将更容易比较和理解对象。
  • 谨慎使用复杂对象。如果您的类具有复杂对象字段,则不应在无限循环中生成字符串表示。要么将这些属性排除在字符串表示之外,要么为复杂对象提供自己的 toString() 方法。
  • 排除故障时,请避免使用 toString() 方法。虽然 toString() 方法有助于调试,但它不是其预期用途。而是使用调试器或日志记录框架。
  • 不要依赖默认配置。不要依赖 toString() 方法的默认实现来为您的对象提供有意义的字符串表示,因为它不太有用。

通过遵循一些最佳实践,我们可以为 Java 中的对象创建有意义且可靠的字符串表示。

以下是重写了 toString() 方法的完整 Person 类:

Person.java

输出

Person{name='Alice', age=25}

在此示例中,我们使用了 Person 类中重写的 toString() 方法,创建了一个名为“Alice”,年龄为 25 岁的 Person 对象。输出显示了 Person 对象的 toString() 方法的自定义字符串表示。

重写 Java 中的 toString() 方法是一种简单但强大的方法,可以为您的对象提供有意义的字符串表示。通过遵循本节中概述的最佳实践,我们可以生成一致的、易于阅读和理解的代码字符串表示。请记住采用一致的格式,谨慎处理复杂对象,并确保在字符串表示中包含所有相关信息。这些原则将帮助您开发一个能够准确而简洁地表示您的对象的 toString() 方法。