如果我在 Synapse
是抽象类型的类中有以下语句:
private final List<Synapse> synapses;
final
是否允许我仍然能够更改 List
中的 Synapse
对象的状态,但阻止我添加新的Synapse
对象到列表?如果我错了,你能解释一下 final
是做什么的,以及我什么时候应该使用关键字 final
吗?
最佳答案
不,final 关键字不会使列表或其内容不可变。如果你想要一个不可变的列表,你应该使用:
List<Synapse> unmodifiableList = Collections.unmodifiableList(synapses);
final 关键字的作用是阻止您为“synapses”变量分配新值。也就是说,你不能写:
final List<Synapse> synapses = createList();
synapses = createNewList();
但是,您可以这样写:
List<Synapse> synapses = createList();
synapses = createNewList();
本质上,您仍然可以更改、添加和删除列表的内容,但不能创建分配给变量 synapses 的新列表。
关于java - 使用 final 关键字声明一个列表字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079365/