1
23
用包装返回值
java.util.Collections.unmodifiableList
. 它不复制数据,而是包装原始列表,并将只读操作委托给基础列表。将修改列表的操作在运行时被拒绝,通过
你的
变成
不幸的是,编译器不会强制执行只读约束。但是,它们将在运行时强制执行。 您还可以使用: unmodifiableSet , unmodifiableMap , unmodifiableCollection , unmodifiableSortedSet ,和 unmodifiableSortedMap . 如果这些还不够,您仍然可以从这种通用设计方法中获得灵感,并创建自己的自定义只读包装类。 |
2
2
:)您有几个选项:
|
3
0
你也可以用 Google Guava 的不可变 collections . 在这种情况下,您将存储 ImmutableList 在你的领域。 当然,如果您的类需要在内部修改此列表,请使用ImmutableList 可以 结果证明这是个坏主意,因为您需要创建一个新的ImmutableList实例,并每次将其重新分配给字段。。。 但是当你知道列表在对象构造之后不会改变的时候,它是完美的。 不可变示例(对象构造后列表不会更改)
可变示例(列表只能使用setter修改)
评论
|
4
0
有一种方法可以替代unmodifiableList方法。您只需返回此私有数组的副本。例如,
好吧,这可能会有表演上的惩罚。但是接口没有改变(仍然返回一个数组)。 |
5
-1
unmodifiableList 绝对是答案。 |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
Prince · 复制大型文件需要更多时间 2 年前 |
Sagar · 为什么在循环之外声明变量会更快? 2 年前 |
seco · 如何在不挂起页面的情况下加载JS 2 年前 |