我是immutablelist的新手,并尝试更好地理解它。据我所知,一旦你在对象中有不可变列表,它就无法修改。但是我在pojo中使用时有点困惑。
我可以将immutableList作为pojo的属性并定义它的getter / setter吗? 如果我这样做,那将会是什么意思。
答案 0 :(得分:1)
你可以在POJO中使用它,是的。但是,对于集合和POJO,你应该小心。
如果你的不可变列表是一个实例字段,那么你应该怎么做:
// list is immutable
public List<X> getList() { return list; }
public void setList(final List<X> list) { this.list = ImmutableList.copyOf(list); }
通常,在bean代码中,使用非永久集合,您将看到:
// list is mutable -- DON'T DO THAT
public List<X> getList() { return list; }
public void setList(final List<X> list) { this.list = list; }
但这非常非常不安全:
ImmutableList
没有此问题!); 应该完成的是:
// list is mutable
public List<X> getList() { return Collections.unmodifiableList(list); }
public void setList(final List<X> list) { this.list = new ArrayList<>(list); }