新需求来了,简单重构下代码,可以复用的写个统一的方法,方法传参时有个Integer id,其中有id++的逻辑。当再把id从方法里拿出来,结果悲剧了。
大概是这样,写了个新方法,
private void process(List list, String s, Integer id){
list.add(s);
id++;
}
public int main(){
process(list, s, id);
return id;
}
结果发现id经过process方法处理后没变。debug发现id++后,id在process方法里已经变成了新的对象,但外面的main里id还是原来的对象。之前想过int不行,没想到Integer也不行。这个情况,要么就process的返回类型改成int,直接return出来id。要么id就声名为AtomicInteger,用它的自增进行处理,始终传递的是原来的对象。