有一个list,有内容,比如size是2
有个bean,中有个信息是setlist。大概如下:
bean.setlist()--list有内容
list.clear()--清空list
bean.getlist()--没有内容了。如果往bean中set其他的值,都没有问题,这是为什么啊?
有个bean,中有个信息是setlist。大概如下:
bean.setlist()--list有内容
list.clear()--清空list
bean.getlist()--没有内容了。如果往bean中set其他的值,都没有问题,这是为什么啊?
list=new ArrayList()--重新new一个
bean.getlist()--有内容
这样就没问题了,我想知道为什么呢?
list对象是一个引用类型的对象,具体
bean.setlist() 的意思就是把list 的引用付值给bean 中的某个元素
list.clear() 将该引用所对应的list真正的对象清空
bean.getlist()因为引用所指向的对象被清空了所以list就没有直了
而你第二次做了个list=new ArrayList()
list所对的引用指向了另外一个list 所以bean.getlist()还在
与你后面的list.clear();
引用的是同一个对象,
不要以为bean.setlist(list);是将list复制一个扔到bean里。
当你new的时候,是重新引用了一个新的对象,原来的对象只有拿到句柄的才能调用到了,也就是bean.getlist();
这个样子的话我就理解了。但是bean不在使用后是否能够正常的被垃圾收集器回收呢?系统是一直在运行的,怕内存溢出。
只是回收的时机不确定,但会被回收的,内存是应该考虑,但如果在回收之前,内存都不够的话,就是有问题了,可能系统是有点问题,比如静态内存区需求过大,一直占用,等等,还有别的一些情况,另外就是虚拟内存大小的设置,都应该考虑。