A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜hen冷 中级黑马   /  2014-12-3 13:37  /  1598 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection接口为什么能打印其对象?求大神们给讲解下!

评分

参与人数 1黑马币 +2 收起 理由
杨佳名 + 2 淡定

查看全部评分

9 个回复

倒序浏览
因为Collection的全部子类都复写了Object类的toString()方法,定义了自己的字符串表达形式
回复 使用道具 举报
桃华月禅 发表于 2014-12-3 15:41
因为Collection的全部子类都复写了Object类的toString()方法,定义了自己的字符串表达形式 ...

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

用Eclipse写程序吧,ctrl +单击--toString
回复 使用道具 举报
本帖最后由 桃华月禅 于 2014-12-4 10:03 编辑

用面向对象继承的思想去找,相同功能向上提取。
输出的不同方式只有Colleation集合和Map集合的两种方式,所以Collection集合的toString方法最佳应该提取到List和Set的父类里边去,Map集合的要提取到HashMap、Hashtable、TreeMap的父类里面去...这样代码复用性才是最佳
这样想你马上就能找到的...面向对象学完了要好好利用...
回复 使用道具 举报
子类找不到,可以找其父类,一级一级向上找肯定能找到!比如:AbstractCollection里复写了toString!ArrayList是它子类的子类!
回复 使用道具 举报
huoxy 发表于 2014-12-4 12:54
子类找不到,可以找其父类,一级一级向上找肯定能找到!比如:AbstractCollection里复写了toString!ArrayL ...

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

我当然是看完才过来发帖的....
你看看ArrayList的父类有几个...往上数第二个不就是吗..抽象的Collection集合中不是就有toSting()方法吗....LZ你好好看看List集合和Set集合共同的父类有没有叫AbstractCollection的?
摆脱LZ认真看别人的发言再来决定别人是否是来胡扯的
回复 使用道具 举报
桃华月禅 发表于 2014-12-4 17:35
我当然是看完才过来发帖的....
你看看ArrayList的父类有几个...往上数第二个不就是吗..抽象的Collection集 ...

哦,大神啊,一直还没注意这点啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马