gpt4 book ai didi

java - google 的 ImmutableList 和 Collections.unmodifiableList() 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 20:32:35 26 4
gpt4 key购买 nike

来自 ImmutableList javadocs:

Unlike Collections.unmodifiableList(java.util.List), which is a view of a separate collection that can still change, an instance of ImmutableList contains its own private data and will never change. ImmutableList is convenient for public static final lists ("constant lists") and also lets you easily make a "defensive copy" of a list provided to your class by a caller.

是不是意味着:

  1. 如果我有 Dimension 对象的 ImmutableList(例如),那么我不能更改其中的任何 Dimension 对象?
  2. 如果我有 Dimension 对象的 Collections.unmodifiableList(列表),那么我不仅可以添加或删除任何对象,还可以更改它们(例如调用 setDimension(width, height) 方法)?

最佳答案

不,不可变性仅适用于Collection中对象的数量和引用,并不涉及您放入Collection中的对象的可变性。

Immutable 列表优于标准 JDK Collections.unmodifiableList 的地方在于,使用 ImmutableList 可以保证引用的对象、它们的顺序和列表的大小不能从任何来源改变。使用 Collections.unmodifiableList 如果其他内容引用了基础列表,即使您引用了不可修改的列表,该代码也可以修改列表。

但是,如果您想要真正的不变性,则必须用不可变对象(immutable对象)填充列表。

关于java - google 的 ImmutableList 和 Collections.unmodifiableList() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com