一个小问题

unlock_2000 北京金软瑞彩科技发展有限公司 技术总监  2004-02-02 02:25:40
在阅读<Thinking in Java>的过程中,在I/O那章的最后总结时,有这么一句话,不知道什么意思,请大侠们解惑.

With inheritance , you can create new types of input and output objects. And you can even add a simple extensibility to the kinds of objects a stream will accept by redefining the toString() method that's automatically called when you pass an object to a method that's expecting a String( Java's limited "automatic type conversion").

侯杰的翻译为:
通过继承,你可以产生新类型的input 和 output对象. 你甚至可以重新定义toString(),为这些"可被stream接受的对象类型"进行简单的扩充.当你将某个对象传入某个"预期收到String的函数时,便会自动调用该对象的toString(),这是JAVA提供的有限度自动型别转换功能.

我知道在象"+"之类的操作符时,对象的toString()方法是能自动调用,但这儿是什么意思呢? 请大侠说详细一点,最好有个小例子让兄弟看看. 谢谢.
...全文
7 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
unlock_2000 2004-02-02
TO danceflash(Wine) 关于println方法的情况我知道,我问的不是这个.

TO flyforlove(为情飞)
我开始也是这么理解的,但写了个小例子一试,本来是要接受String类型的地方用个
方用个对象往里一传,连编译都过不了. :)
回复
danceflash 2004-02-02
println方法中使用的String.valueOf(Object)方法
而String.valueOf(Object)方法又去调用了toString方法 ^_^
回复
flyforlove 2004-02-02
跟踪一下println的源码,确实调用了toString()函数,obj.toString()

“预期收到String的函数时,便会自动调用该对象的toString()”,
就是说如果你把对象传到一个地方,而这个地方本来是要接受String类型的,
那么java的编译器就会自动调用toString()方法,
toString()这个函数是object类就有的。
回复
unlock_2000 2004-02-02
不是的,我看了一下,println方法是可以接受一个object类型的参数的.
这个方法的实现中将对象转成String , 显然跟这里说的不是一个意思.
回复
danceflash 2004-02-02
这章没看,不便多说
不过,除了+之外,print方法也要自动调用toString方法
不知道这里是不是指的这个
回复
416 2004-02-02
关注
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告