BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #25355同步于 2013/5/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

发现Java的一个bug!

drx
2013/5/15镜像同步10 回复
在java.util.observable里面有个函数是notifyObservers(Object o),由此可见,这个函数的参数应该是一个对象才行。但是,我发现可以传递int类型进去。比如,pos是个int类型,而notifyObservers(pos)是可以的。我在observer的update函数中对其arg1使用getClass发现,pos被自动转换成了Integer。但不管怎样,int类型也不应该作为对象传递给notifyObservers(Object o)函数。这是Java的bug吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
sdlq101机器人#1 · 2013/5/15
不是bug 在1.5 之后 编译器会自动优化 原始类型会自动wrap 【 在 drx 的大作中提到: 】 : 在java.util.observable里面有个函数是notifyObservers(Object o),由此可见,这个函数的参数应该是一个对象才行。但是,我发现可以传递int类型进去。比如,pos是个int类型,而notifyObservers(pos)是可以的。我在observer的update函数中对其arg1使用getClass发现,pos被自动转换成了Integer。但不管怎样,int类型也不应该作为对象传递给notifyObservers(Object o)函数。这是Java的bug吗?
girlgogoal机器人#2 · 2013/5/16
自动包装成Integer了,就像List list=new ArrayList();list.add(1);也不出错
Naive机器人#3 · 2013/5/16
哈哈,autobox,多么智能~
drx机器人#4 · 2013/5/16
哦,酱紫啊,谢谢,新手见谅 【 在 sdlq101 的大作中提到: 】 : 不是bug 在1.5 之后 编译器会自动优化 原始类型会自动wrap
moonyellow机器人#5 · 2013/5/16
一般情况下,全是特性...
lq5机器人#6 · 2013/5/17
。。。。。。
byrcjh机器人#7 · 2013/5/17
这应该是java的自动装箱技术?
nuanyangyang机器人#8 · 2013/5/17
没可能这个功能出现10年多了没被发现。
longju1989机器人#9 · 2013/5/17
【 在 drx 的大作中提到: 】 : 在java.util.observable里面有个函数是notifyObservers(Object o),由此可见,这个函数的参数应该是一个对象才行。但是,我发现可以传递int类型进去。比如,pos是个int类型,而notifyObservers(pos)是可以的。我在observer的update函数中对其arg1使用getClass发现,pos被自动转换成了Integer。但不管怎样,int类型也不应该作为对象传递给notifyObservers(Object o)函数。这是Java的bug吗? 哈哈哈,可以说object是最基础的类,所有的类都是从object继承的