手机版
你好,游客 登录 注册
背景:
阅读新闻

List元素为泛型时的注意事项

[日期:2019-03-09] 来源:Linux社区  作者:AaronCui [字体: ]

最近的项目赶得非常紧,这节奏跟最近的天气一点也不搭调。

编码的过程,遇到一个关于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的元素多会被修改。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-03/157385.htm

linux
相关资讯       List元素为泛型  List元素 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款