zoukankan      html  css  js  c++  java
  • 第10条:始终要覆盖toString

    java.lang.Object的toString方法的实现:

    public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    这通常不是用户期望看到的,它包含类名称,一个“@”符号,以及散列码的无符号十六进制表示法。

    toString通用约定指出,被返回的字符串应该是一个“简洁的,但信息丰富,并且易于阅读的表达形式”,进一步的约定指出,建议所有的子类都覆盖这个方法。

    提供好的toString实现可以使类用起来更加舒适,当对象被传递给println、printf、字符串联操作符(+)以及assert或者被调试器打印出来时,toString方法会被自动调用。

    提供好的toString方法,产生有用的诊断信息会非常容易:System.out.println("Failed to connect: " + phoneNumber);

    toString方法应该返回对象中包含的所有值得关注的信息,如果对象很大,包含的状态信息难以用字符串表示,应该返回一个摘要信息。

    在实现toString的时候,必须作出是否指定返回值的格式的决定。指定格式的好处是可以被用作一种标准的、明确的、适合人阅读的对象表示法。不足之处在于类一旦指定格式,必须始终如一地坚持这种格式。程序员将编写代码来解析这种字符串,如果将来改变了格式,他们的代码就无法正常运行了。总的来说不指定格式保留了灵活性。

    两个建议:

    1.无论是否决定指定格式,都应该在文档中明确地表明意图,通过文档注释来说明。

    2.无论是否指定格式,都为toString返回值中包含的所有信息,提供一种编程式的访问途径,如使用getter方法提供。否则程序员必须去解析字符串,而这会导致大量不必要的工作量和增加程序出错的可能性。

  • 相关阅读:
    myeclipse codelive插件关闭
    php-memcache基本用法
    css3选择器笔记
    网卡配置/etc/network/interfaces
    javascript 调用cookies
    $_FILES详解
    http_build_query
    javascript写贪吃蛇游戏(20行代码!)
    php 中date显示时间不对与Linux文件乱码问题
    const && define
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5646033.html
Copyright © 2011-2022 走看看