List元素为泛型时的谨慎事项
发布时间:2021-12-05 13:00:20 所属栏目:教程 来源:互联网
导读:最近的项目赶得非常紧,这节奏跟最近的天气一点也不搭调。 编码的过程,遇到一个关于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的元素多会被修改。 ![]() (编辑:牡丹江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐