加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

List元素为泛型时的谨慎事项

发布时间:2021-11-12 12:22:46 所属栏目:教程 来源:互联网
导读:最近的项目赶得非常紧,这节奏跟最近的天气一点也不搭调。 编码的过程,遇到一个关于List的小问题。 在调用List.add(E e)的时候范了一个小毛病,很自然地认为list中存储的是 E 对象的另一个实例,其实存储的只是实例的引用。 复现问题: 泛型:Shit类 public

最近的项目赶得非常紧,这节奏跟最近的天气一点也不搭调。
 
编码的过程,遇到一个关于List的小问题。
 
在调用List.add(E e)的时候范了一个小毛病,很自然地认为list中存储的是 E  对象的另一个实例,其实存储的只是实例的引用。
 
复现问题:
 
泛型:Shit类
 
public class Shit {
 
    private int id;
    private String description;
    private String owner;
   
  getters and setters;         
}
 
测试类:
 
public class CasualTest {
    public static void main(String[] args) {
 
        List<Shit> list =Lists.newArrayList();
 
        Shit shit = new Shit();
        shit.setId(1);
        shit.setDescription("a");
        list.add(shit);
        shit.setId(2);
        shit.setDescription("b");
        list.add(shit);
 
        Shit shit1 = new Shit();//这里new了一个对象
        shit1.setId(3);
        shit1.setDescription("c");
        list.add(shit1);
 
        shit1.setId(3);
        shit1.setDescription("c");
        list.add(shit1);
 
        System.out.println(JsonUtils.toJson(list));
    }
}
 
看下复现的结果:
 
[{"description":"b","id":2},{"$ref":"$[0]"},{"description":"c","id":3},{"$ref":"$[2]"}]
 
list中的对象,只打出了两个。另外两个,都是引用,分别指向了$[0]第一个元素和$[2]第三个元素。
 
list中只是存了一个引用,当你用这个引用修改实例的值时,所有值是这个引用的list的元素多会被修改。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读