来自ImmutableList javadocs:
与Collections.unmodifiableList(java.util.List)不同,后者是对可以更改的单独集合的视图,而ImmutableList实例包含其自己的私有数据且永远不会更改。 ImmutableList适用于公共静态常量列表以及允许您轻松地为调用方提供的列表创建“防御性副本”的情况。
这是否意味着:
- 如果我有一个Dimension对象的ImmutableList(例如),那么我不能更改其中任何Dimension对象吗?
- 如果我有Dimension对象的Collections.unmodifiableList(list),那么我只能添加或删除任何对象,但是我可以更改它们(例如调用setDimension(width,height)方法)吗?
1. 是的,如果你有一个Dimension对象的ImmutableList,那么你不能更改其中任何一个Dimension对象。 2. 不完全正确。如果你有一个Dimension对象的Collections.unmodifiableList,你不能添加或删除其中的任何对象,也不能更改它们的值。因此,调用setDimension(width,height)方法将导致UnsupportedOperationException异常。