黑马程序员技术交流社区

标题: Collection接口为什么能打印 [打印本页]

作者: 夜hen冷    时间: 2014-12-3 13:37
标题: Collection接口为什么能打印
Collection接口为什么能打印其对象?求大神们给讲解下!

作者: 桃华月禅    时间: 2014-12-3 15:41
因为Collection的全部子类都复写了Object类的toString()方法,定义了自己的字符串表达形式
作者: 夜hen冷    时间: 2014-12-3 16:42
桃华月禅 发表于 2014-12-3 15:41
因为Collection的全部子类都复写了Object类的toString()方法,定义了自己的字符串表达形式 ...

我怎么没找到你说的那个子类复写了toString方法,例如ArrayList
要是能找到我也不发这种问题了,就是没找到所以才不知道
作者: kerner    时间: 2014-12-3 17:40
夜hen冷 发表于 2014-12-3 16:42
我怎么没找到你说的那个子类复写了toString方法,例如ArrayList
要是能找到我也不发这种问题了,就是没找 ...

用Eclipse写程序吧,ctrl +单击--toString
作者: 桃华月禅    时间: 2014-12-4 10:01
本帖最后由 桃华月禅 于 2014-12-4 10:03 编辑

用面向对象继承的思想去找,相同功能向上提取。
输出的不同方式只有Colleation集合和Map集合的两种方式,所以Collection集合的toString方法最佳应该提取到List和Set的父类里边去,Map集合的要提取到HashMap、Hashtable、TreeMap的父类里面去...这样代码复用性才是最佳
这样想你马上就能找到的...面向对象学完了要好好利用...

作者: huoxy    时间: 2014-12-4 12:54
子类找不到,可以找其父类,一级一级向上找肯定能找到!比如:AbstractCollection里复写了toString!ArrayList是它子类的子类!
作者: 夜hen冷    时间: 2014-12-4 16:33
huoxy 发表于 2014-12-4 12:54
子类找不到,可以找其父类,一级一级向上找肯定能找到!比如:AbstractCollection里复写了toString!ArrayL ...

你真是大神啊,这点我再不知道。你自己看看,看看超类或接口有复写toString吗,要是有复写的话我就不问了?查查文档后再给别人指教!
作者: huoxy    时间: 2014-12-4 16:52
ArrayList、LinkedList、HashSet、TreeSet这几个类的API文档中说了:从类 java.util.AbstractCollection 继承的方法里就有toString方法,说明这个类复写Object类的toString方法(返回此 collection 的字符串表示形式。该字符串表示形式由 collection 元素的列表组成,这些元素按其迭代器返回的顺序排列,并用方括号 ("[]") 括起来。相邻元素由字符 ", "(逗号加空格)分隔。)!而java.util.AbstractCollection实现了Collection接口!也就是上述4个类间接实现Collection接口,所以可以直接通过println方法打印对象!
不知道楼主问题的原意是什么?还是我理解错了?你说的打印其对象是指什么呢?
作者: 桃华月禅    时间: 2014-12-4 17:35
本帖最后由 桃华月禅 于 2014-12-4 17:39 编辑
夜hen冷 发表于 2014-12-4 16:33
你真是大神啊,这点我再不知道。你自己看看,看看超类或接口有复写toString吗,要是有复写的话我就不问了 ...

我当然是看完才过来发帖的....
你看看ArrayList的父类有几个...往上数第二个不就是吗..抽象的Collection集合中不是就有toSting()方法吗....LZ你好好看看List集合和Set集合共同的父类有没有叫AbstractCollection的?
摆脱LZ认真看别人的发言再来决定别人是否是来胡扯的

作者: 夜hen冷    时间: 2014-12-4 19:07
桃华月禅 发表于 2014-12-4 17:35
我当然是看完才过来发帖的....
你看看ArrayList的父类有几个...往上数第二个不就是吗..抽象的Collection集 ...

哦,大神啊,一直还没注意这点啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2