关于javabean 与list的问题,我要哭了

aianbailin 2010-08-26 09:31:01
有一个list,有内容,比如size是2
有个bean,中有个信息是setlist。

大概如下:
bean.setlist()--list有内容
list.clear()--清空list
bean.getlist()--没有内容了。

如果往bean中set其他的值,都没有问题,这是为什么啊?
...全文
295 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phoekiz 2010-09-04
  • 打赏
  • 举报
回复
Java方法是以引用形式传递的。lz的情况就是list和bean中的list指向的是同一对象,只是两个引用不同而已,就像是A a= new A(); A b =a;一样;所以当一方操纵对象的时候,由于是同一指向,另一方的内容也会变
ltandfyy 2010-09-03
  • 打赏
  • 举报
回复
超出作用域就会,还有一些没有句柄的,比如直接new一个对象没接,应该是这样。
只是回收的时机不确定,但会被回收的,内存是应该考虑,但如果在回收之前,内存都不够的话,就是有问题了,可能系统是有点问题,比如静态内存区需求过大,一直占用,等等,还有别的一些情况,另外就是虚拟内存大小的设置,都应该考虑。
ltandfyy 2010-08-27
  • 打赏
  • 举报
回复
bean.setlist(list);
与你后面的list.clear();
引用的是同一个对象,
不要以为bean.setlist(list);是将list复制一个扔到bean里。
当你new的时候,是重新引用了一个新的对象,原来的对象只有拿到句柄的才能调用到了,也就是bean.getlist();
wawqhzbz 2010-08-27
  • 打赏
  • 举报
回复
先明白
list对象是一个引用类型的对象,

具体
bean.setlist() 的意思就是把list 的引用付值给bean 中的某个元素
list.clear() 将该引用所对应的list真正的对象清空
bean.getlist()因为引用所指向的对象被清空了所以list就没有直了
而你第二次做了个list=new ArrayList()
list所对的引用指向了另外一个list 所以bean.getlist()还在


liuleyiusst 2010-08-27
  • 打赏
  • 举报
回复
我的理解:第一个,list.clear(),应该是把当前的list清空,所以拿不到内容,而第二个,重新new一个list,就不关以前的事了,以前的那个list还在,那个bean还是用的以前那个list吧。
aianbailin 2010-08-27
  • 打赏
  • 举报
回复
谢谢 wawqhzbz(wawqhzbz)与ltandfyy(cache)
这个样子的话我就理解了。但是bean不在使用后是否能够正常的被垃圾收集器回收呢?系统是一直在运行的,怕内存溢出。
  • 打赏
  • 举报
回复
哥也不太明白
茫茫大海 2010-08-26
  • 打赏
  • 举报
回复
不太明白楼主的意思,不太明白!
aianbailin 2010-08-26
  • 打赏
  • 举报
回复
bean.setlist()--list有内容
list=new ArrayList()--重新new一个
bean.getlist()--有内容
这样就没问题了,我想知道为什么呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧