如果我在Synapse一个抽象类型的类中有以下语句:
private final List<Synapse> synapses;
Run Code Online (Sandbox Code Playgroud)
是否final允许我仍然能够更改Synapse对象的状态List,但是阻止我将新Synapse对象添加到列表中?如果我错了,你能否解释一下我final在做什么以及什么时候应该使用关键字final.
小智 32
不,final关键字不会使列表或其内容不可变.如果你想要一个不可变的List,你应该使用:
List<Synapse> unmodifiableList = Collections.unmodifiableList(synapses);
Run Code Online (Sandbox Code Playgroud)
final关键字的作用是阻止您为'synapses'变量赋值.即,你不能写:
final List<Synapse> synapses = createList();
synapses = createNewList();
Run Code Online (Sandbox Code Playgroud)
但是,您可以写道:
List<Synapse> synapses = createList();
synapses = createNewList();
Run Code Online (Sandbox Code Playgroud)