Java周二生效! 覆盖`toString`

今天的主题比前面几章的规范性要差得多,在前几章中,我们遵循的合同背后有非常数学上的听起来原理。 今天要简单得多。 的toString()方法。 如有效的Java指出,宾语为我们提供了此方法的默认实现,但它并不是很有用,尤其是当您尝试调试并且仅遇到诸如动物@ 23a5b2。 有关的文档toString()甚至说“建议所有子类都重写此方法”。 好吧,所有类都是宾语因此,这意味着建议所有类都应重写此方法。

的主要用途之一toString根据我的经验,方法是协助调试。 是否覆盖toString开发人员是否会尝试使用toString调试方法。 了解通过对象公开多少对象数据是一种艺术。toString方法。 您应该尝试通过该方法公开尽可能多的信息,但是显然,一个大对象可能实际上无法公开所有这些信息。 在这些情况下,我们必须使用判断来确定哪些字段最有用。

必须做出的决定是是否记录该方法将返回的格式。 有了这样的合同,您的班级的用户可以预期将返回什么并可以按预期的方式使用它。 如果您确实定义了合同,最好提供一个采用字符串表示形式并创建对象的静态工厂方法(如果不是通过toString方法,请参见上文)。 当然,指定格式的不利之处在于,您将一生都被该格式所困扰,从而最终失去了灵活性。

另外要记住的另一项是公开toString通过常规吸气剂的方法。 我们要避免的是强迫开发人员解析toString方法来获取他们所需的信息。 这不仅性能不佳,而且容易出错。

在某些情况下,toString可以跳过方法,例如在枚举和实用程序类中。

我们再次找到了一个地方,龙目岛可以帮助我们克服样板。 龙目岛@ToString注释具有非常特定的格式。 这是一种非常可靠的格式,可以通过简单的方式获取信息。 对于特定的上下文肯定可以有更好的格式,但是它使用了很好的默认值。

值得庆幸的是,本章比我们前面的章节简单一些。 覆盖toString方法是那些很少引起注意的小事情之一,但重要的是这些小事情。

from: https://dev.to//kylec32/effective-java-tuesday-override-tostring-14n7

发布了0 篇原创文章 · 获赞 0 · 访问量 444

猜你喜欢

转载自blog.csdn.net/cunxiedian8614/article/details/105689883
今日推荐