记录一些心得。
1.可修改对象(没使用final关键字的类的实例,如ArrayList )缓存后使用需要注意。
如下:
class CacheUtil{
private static List cacheObj =null;
public synchronized List getCacheObj(){
if(cacheObj ==null){
cacheObj = new ArrayList();
//to do acess database or other.
}
return cacheObj ;
}
}
//other code here ......//
List userList = CacheUtil.getCacheObj();
userList.add(_obj);//
userList.addAll(_aList);
//used userList!
//如果上面代码会多次执行,那么缓存的对象会越来越大,其实本意只是为了获取缓存的对象在加上另外一部分对象。
解决方法,使用clone方法即可。
((ArrayList)userList).clone();
2.对于输入,输出流、遵守在哪取,在哪释放。
public void fun(Conntion con,..){
///不要在这里关闭con!!
}