是否可以在不允许修改的情况下提供对 ArrayList 的引用?
Is it possible to give a reference to an ArrayList without allowing it to be modified?
如果我想让另一个 class 能够访问 arraylist 的内容,例如循环遍历它以查看里面的内容而不允许它实际添加或删除任何元素,这可能吗?
在我看来,我认为应该有一些方法可以发送 ArrayList 的不可变版本。
如果可以的话,有人可以给我举个例子吗?
谢谢。
很多方法...
最简单的方法是将 ArrayList 包装在 unmodifiable list 中,使用:
Collections.unmodifiableList(yourArrayList)
此 returns 列表的不可修改视图。
请注意,这并不意味着项目本身无法修改。
其他选择可能是:
- 将列表转换为数组(使用
toArray(T[] a)
,并将其传递给 Arrays.asList()
,这也会发回一个不可修改的列表。
- 如果在您的代码中使用其他一些库,例如 Guava,您可以调用
ImmutableList.copyOf()
或其他变体。
如果我想让另一个 class 能够访问 arraylist 的内容,例如循环遍历它以查看里面的内容而不允许它实际添加或删除任何元素,这可能吗?
在我看来,我认为应该有一些方法可以发送 ArrayList 的不可变版本。
如果可以的话,有人可以给我举个例子吗?
谢谢。
很多方法...
最简单的方法是将 ArrayList 包装在 unmodifiable list 中,使用:
Collections.unmodifiableList(yourArrayList)
此 returns 列表的不可修改视图。
请注意,这并不意味着项目本身无法修改。
其他选择可能是:
- 将列表转换为数组(使用
toArray(T[] a)
,并将其传递给Arrays.asList()
,这也会发回一个不可修改的列表。 - 如果在您的代码中使用其他一些库,例如 Guava,您可以调用
ImmutableList.copyOf()
或其他变体。