CGF*_*FoX 5 java class arraylist runtimemodification
我在 Java 项目的一个类中使用了 ArrayList。该类跟踪列表是否已更改,并提供公共方法来添加和删除列表中的元素,自动将变量设置为“已更改”。
到目前为止,该列表是公开的,因为我希望我的列表可以在任何地方公开阅读。但我只希望拥有该列表的类能够修改它。所以没有来自外部类的修改。那可能吗?如果是这样,怎么办?
通常对于访问控制,您可能会使用 getter 和 setter 方法。但即使使用 getter 方法并将列表设置为私有,另一个类仍然可以这样做getList().remove(element),从而从外部修改列表,而该类不会注意到列表已更改。
将 ArrayList 字段设置为私有,但让 getter 返回Collections.unmodifiableList(list),这提供了不可修改的视图。
这将允许外部代码将其视为普通列表,使用 foreach 循环等,但将禁用修改操作。此外,unmodifierList 在恒定时间内返回一个视图。
\n\n这实际上就是它设计的确切用例。Java文档:
\n\n\n\n此方法允许模块为用户提供对内部列表的“只读”访问。返回列表上的查询操作“读取”指定列表,并尝试修改返回列表(无论是直接修改还是通过其迭代器修改),都会导致\xc2\xa0UnsupportedOperationException。
\n
| 归档时间: |
|
| 查看次数: |
5572 次 |
| 最近记录: |