Fab*_*ndl 3 final list immutability guava
我有一个类在列表中保存条目,可以通过一种方法不时清除和重新填充.使用普通List作为类的最终成员被认为是更好的做法,还是每次重新填充时都应该创建一个Immutablelist,从而丢失'final'修饰符?
我问的原因是因为其他对象可以从外部访问List,但是不能更改它们.我想向它们返回一个ImmutableList,但不是每次调用访问器时都复制它.
我实际上并没有将Guava用于此用例,而只是JDK中的工具.
你应该做的是在你的类中使用传统的,可变的列表实现 - 可能是一个ArrayList.但是,您的类应该实现getList()方法
public List<Something> getList() {
return Collections.unmodifiableList(internalList);
}
Run Code Online (Sandbox Code Playgroud)
这将确保其他对象无法修改列表,但可以根据需要修改列表.