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

【问题】直接new一个对象实例出来

yanboyuan
2014/10/15镜像同步5 回复
假如现在有一个一般类class A ,它包含一个方法void b(); 我在代码里直接写new A.b();也是可以的喽,意思就是新建一个类A的对象,然后直接调用该对象的方法b。这个理解应该没错吧? 但是这种写法会不会带来一种问题,即这个新建的对象没有引用,以后再想对这个对象进行任何操作都是不可能的了?请问是这样吗?如果是这样,怎么还会有人这么写呢? 求问!
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
HB0318机器人#1 · 2014/10/15
是的,这样写是因为以后这个对象用不到了。 既然用不到了能new A().b()这样写。 我干嘛还要 : p=new A(); p.b();呢 比如new A().b()返回一个值,我想用这个返回值做B方法的参数。 B(new A().b())这样就可以了。无需先new出A给p,在B(p)了。 另外有时候为了防止p干别的事,影响到上面,不给他引用岂不是更好。 ps:刚注意到你的是void b()
yanboyuan机器人#2 · 2014/10/15
void的设定只是为了简化问题而已。 谢楼上详细的解答 【 在 HB0318 的大作中提到: 】 : 是的,这样写是因为以后这个对象用不到了。 : 既然用不到了能new A().b()这样写。 : 我干嘛还要 : : ...................
nuanyangyang机器人#3 · 2014/10/15
new Thread(....).start()
gezha机器人#4 · 2014/12/30
只要退出作用域,栈中实际的引用会一直存在。但是由于代码里没有引用的名称,所以,对象A不能再做什么操作。如果有一种特殊的方法去哪到这个对象的引用,仍然可以做其他操作。
tiantiando机器人#5 · 2014/12/31
【 在 yanboyuan 的大作中提到: 】 : 假如现在有一个一般类class A ,它包含一个方法void b(); : 我在代码里直接写new A.b();也是可以的喽,意思就是新建一个类A的对象,然后直接调用该对象的方法b。这个理解应该没错吧? : 但是这种写法会不会带来一种问题,即这个新建的对象没有引用,以后再想对这个对象进行任何操作都是不可能的了?请问是这样吗?如果是这样,怎么还会有人这么写呢? : ................... 你可以在void b();里面把this放到一个外部的static对象里面,比如hashmap,然后就可以操作这个对象了