如果我在一个类中有以下声明,其中Synapse是抽象类型:
Synapse
private final List<Synapse> synapses;
是否final能让我仍然能够更改中的Synapse对象的状态List,但阻止我将新Synapse对象添加到列表中?如果我写错了,请您解释一下final正在做什么以及何时应该使用关键字final。
final
List
不,final关键字不会使列表或其内容不可变。如果您想要一个不可变的列表,则应使用:
List<Synapse> unmodifiableList = Collections.unmodifiableList(synapses);
final关键字的作用是防止您为’synapses’变量分配新值。即,您不能写:
final List<Synapse> synapses = createList(); synapses = createNewList();
但是,您可以编写:
List<Synapse> synapses = createList(); synapses = createNewList();