一尘不染

使用final关键字声明List字段

java

如果我在一个类中有以下声明,其中Synapse是抽象类型:

private final List<Synapse> synapses;

是否final能让我仍然能够更改中的Synapse对象的状态List,但阻止我将新Synapse对象添加到列表中?如果我写错了,请您解释一下final正在做什么以及何时应该使用关键字final


阅读 1093

收藏
2020-12-03

共1个答案

一尘不染

不,final关键字不会使列表或其内容不可变。如果您想要一个不可变的列表,则应使用:

List<Synapse> unmodifiableList = Collections.unmodifiableList(synapses);

final关键字的作用是防止您为’synapses’变量分配新值。即,您不能写:

final List<Synapse> synapses = createList();
synapses = createNewList();

但是,您可以编写:

List<Synapse> synapses = createList();
synapses = createNewList();
2020-12-03