7

这可能是一个非常基本的问题,如果已经问过这个问题,我们深表歉意。Java中的 toString() 应该用于实际的程序逻辑还是仅用于调试/人类阅读。我的基本问题是当我需要在实际程序流中使用字符串表示时,应该使用 toString() 或编写一个名为 asString() 的不同方法。

我问的原因是我在 Web 服务中有一堆类,它们依赖于 toString() 才能正常工作,在我看来,像 asString() 这样的东西会更安全。

谢谢

4

2 回答 2

11

除少数特定情况外,toString应用于调试,而不是用于生产数据流。

该方法有几个限制,使其不太适合在生产数据流中使用:

  • 不带参数,该方法不会让您轻松更改字符串表示以响应环境。特别是,很难以对当前语言环境敏感的方式格式化字符串。
  • 作为java.Object类的一部分,此方法通常被子类覆盖。这在您依赖特定表示的情况下可能是有害的,因为子类的编写者可能不知道您的限制。

该规则的明显例外是和类的toString方法,因为这两个方法只是从相应对象的可变内容中生成一个不可变字符串。StringBuilderStringBuffer

于 2013-11-11T16:42:16.450 回答
0

它不仅用于调试/人类阅读,它实际上取决于使用对象的上下文。例如,如果您有一个显示某个对象 X 的表,那么您可能希望该表显示 X 的可读文本表示,在这种情况下,您通常会实现 toString() 方法。这当然是一个基本示例,但在很多情况下实现 toString() 将是一个好主意。

于 2013-11-11T16:44:58.417 回答