使用ArrayList.add()时 后面的数据完全覆盖前面的数据

来源:互联网 发布:斯蒂芬库里 知乎 编辑:程序博客网 时间:2024/05/21 21:48

今天在写项目时发现了一个bug

question = new Question();question = GetQuestion.GetQuestion(str);list.add(question);

GetQuestion中的GetQuestion方法是解析传入的字符串,以question对象返回。但是之后发现之后解析的question会覆盖list中前面的question,结果是list中全是最后一次解析的question。

经过一番调试才发现GetQuestion中的GetQuestion方法中的question变量是静态的(static),也就是我们放入list中的对象都是这个静态的question,虽然我们每次的question不一样,但是传入的引用都是GetQuestion中这个静态的变量,以至于最后list中都是最后一次解析的question,也就是那个静态变量。
所以以后向list中传数据不要传静态变量而且每次传入的数据要重新new一个保证是一个新的引用

0 0
原创粉丝点击