我在intellij中工作很多,让类有自己的tostring(intellij中生成的一个很好)可以很方便,所以你可以看到比MyClass @ 1345更有用的东西,当试图找出什么是。
我的问题是:可以吗?我正在添加没有商业价值的代码,并且不会影响我的测试用例或我的软件的执行(除了调试之外,我没有使用toString())。不过,这是我流程的一部分。这里有什么用?
答案 0 :(得分:5)
toString()
方法主要用作调试目的方法。
除了一些特殊情况,您应该倾向于将其用于调试目的,而不是向客户端显示信息,因为客户端需求可能恰好与今天的toString()
方法不同或相同,但明天可能会有所不同。 />
从toString()
javadoc,您可以阅读:
返回对象的字符串表示形式。一般来说, toString方法返回一个“文本表示”的字符串 宾语。结果应该是简洁但信息丰富的表示 一个人很容易阅读。建议所有人 子类重写此方法。
对您而言重要的部分是:
结果应该是简洁但信息丰富的表示 一个人很容易阅读。
和
建议全部 子类重写此方法。
你这么说:
不过,这是我流程的一部分。这里有什么用?
好事:规范推荐它。
答案 1 :(得分:4)
除了davidxxx的优点之外,还有以下几点适用:
toString()
使用类似的实现 - 或“无”这样做。toString()
toString()
实施强大 含义:你必须避免你的实现抛出任何异常(例如NPE因为你碰巧对某些可能为null的fieldX执行someString + fieldX.name()
)。
您还必须避免创建“昂贵”的实现(例如,对某些数据库进行“深入”以从中返回值的代码)。
2%的个人观点:我发现toString()
在调试时非常有价值;但是我也看到了 toString()过于昂贵的对实际性能的影响。事情是:您不知道某些跟踪代码在您的对象上调用toString()
的频率;所以你最好确保它快速返回 。
答案 2 :(得分:0)
docs解释了这种方法的功能:
返回对象的字符串表示形式。通常,toString方法返回一个"文本表示"的字符串。这个对象。结果应该是一个简洁但信息丰富的表示,便于人们阅读。建议所有子类都覆盖此方法。
如您所见,他们没有为此方法指定特定用途或阻止您使用它进行调试,但他们只说明了预期要做的事情,并建议在Object的子类中实现此方法。
因此严格来说,如何使用此方法取决于您。在我正在学习的大学课程中,某些任务需要覆盖toString方法,在某些情况下我们会被要求用它来演示debuging。
答案 3 :(得分:-1)
这是完全可以的,甚至是个好主意。大多数类都没有指定toString的内容,因此将它用于逻辑是不明智的(内容可能会在类的未来版本中更改)。但有些类可以做,例如StringBuilder。然后,也可以使用逻辑的返回值。
因此,对于您自己的类,您甚至可以选择指定内容并使用(并让用户使用)逻辑的返回值。