2017-07-19 40 views

回答

0

Unmodifiable List是您必须采取的方法。但是有一个限制,因为这个不可修改的类正在使用一个通常的List,并且它仍然是可修改的。

final List<String> modifiable = new ArrayList<>(); 
modifiable.add("Java"); 
modifiable.add("is"); 

final List<String> unmodifiable = Collections.unmodifiableList(modifiable); 
System.out.print("Before modification: " + unmodifiable); 

modifiable.add("the"); 
modifiable.add("best"); 

System.out.print("After modification: " + unmodifiable); 

在上面的代码段输出是意想不到的如下。

修改前:Java中,是] 修改后:Java的,是的,最好的]

阅读this article了解unmodifiableList的陷阱,并为他们的解决方案。

2

您可以在列表中创建一个不可修改的列表。 Collections类有这方面的实用方法。

List<String> unModifiableList=Collections.unmodifiableList(
             oldList); 

一旦在实际对象中准备好列表,就可以将其冻结。

0

您可以使用列表作为构造函数参数在您的getter方法中返回List的新实例。

+0

这是正确的答案。只要返回一份清单的副本,让客户随时随地玩就可以了。请注意,使列表中的对象也是不可变的是一个完全不同的挑战...... –