【问题标题】:what is the use of toString() in java [duplicate]java中toString()的用途是什么[重复]
【发布时间】:2011-02-22 16:16:12
【问题描述】:

可能的重复:
What are the original reasons for ToString() in Java and .NET?
when to use toString() method

toString()在java中的主要用途是什么

【问题讨论】:

标签: java


【解决方案1】:

简而言之,您提出了类的字符串表示形式,因此您将在日志中或在调试时看到有意义的值,而不是默认的 YourClass@38c313。这种表示是完全任意的。

有关详细信息,请查看Effective Java 中的第 10 项,它有一些非常好的建议。

【讨论】:

    【解决方案2】:

    补充一下,有时将一些对象转换为文本表示,然后定义一个构造函数,该构造函数可以从该文本表示中创建一个对象,例如

    public Foo(String textualRep) {
    
    }
    

    我在 JDK 中的某个地方看到过这种方法,但不记得在哪里。

    【讨论】:

      【解决方案3】:

      正如javadoc 所说:

      返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。结果应该是一个简洁但信息丰富的表示,易于人们阅读。建议所有子类重写此方法。

      您可以将其用于:

      • 日志记录
      • 调试中
      • 在 UI 中表示

      等等

      但是,建议您仅将其用于内部目的,例如日志记录和调试。

      【讨论】:

      • +1 特别是“建议您仅将其用于内部目的,例如日志记录和调试”。 Effective Java(我忘了具体是哪一项)给出了一些很好的例子来说明为什么会这样。
      • 当 StringBuffer 或 StringBuilder 打破这个原则时,我很痛苦......
      • @Vincent,公平点。但它有不同的语义,也许应该是buildString() 而不是toString()
      • toString() 不应用于 UI 中的表示。 UI 中的表示通常依赖于上下文(例如用户区域设置)。此外,对日志记录有用的内容通常与对用户有用(或可理解)的内容大不相同。
      【解决方案4】:

      toString() 的主要用途是允许打印或记录任意对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 2016-10-29
        • 2012-05-06
        • 2014-08-28
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多