2013-05-07 48 views
-1

为什么不创建一个返回类中的所需信息而不是重写toString()方法的方法?重写toString的目的是什么?

+0

'“为什么不创建一个方法,在类中返回所需的信息......” - 嗯? “你在课堂上返回所需的信息”是什么意思?重写'toString()'有什么问题?你知道它如何与'System.out.println(...)'很好地啮合,对吗? – 2013-05-07 23:32:45

+0

他们不能已经这样做吗? – Tdorno 2013-05-07 23:33:23

+0

我想我不知道它的网格很好。我读过很多帖子,我可以找到的所有内容是...“toString方法返回一个字符串,该文本代表此对象” – Bob 2013-05-07 23:43:29

回答

3

覆盖toString()用于设置在隐式字符串转换期间返回的内容。一个例子可能是这样的:

System.out.println("The result is: " + animal); 

这是更好地看到:

The result is: a dog. 

比:

The result is: [email protected] 
+0

完美,为什么重写toString()而不是创建方法getAnimal()? – Bob 2013-05-07 23:55:41

+0

@Bob,你可能必须显式地调用'getAnimal()',而不是自动调用'toString()'。例如:'System.out.println(“结果是:”+ animal.getAnimal);'。两种方式都很好,但我总是为调试做一个有用的toString()方法。有些地方只会调用'toString()'来创建调试输出,所以这是另一个需要考虑的事情。 – 2013-05-08 00:50:48

2

基本上是因为它保证每一个对象上得到支持。 toString()Object类的成员,因为它的工作是获取类的字符串表示形式,所以其他代码可以依赖它。例如,PrintStreamSystem.out的类)实现了依赖它的print(Object)方法。

1

toString被覆盖的常见原因是对于那些对toString的经典实现来说不明显的成员的类。在这种情况下,自定义toString将返回该类的相关字符串值是有意义的。

相关问题