java - 使用 final 关键字声明一个列表字段

标签 java list final

如果我在 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/

相关文章:

java - 为什么我不能将 final long 分配给 int?

java - Kotlin 中 Java static final 字段的等价物是什么?

Python:将列表与其索引进行比较并创建一个新列表

python - 使用单词列表作为引用的正则表达式提取,Python

Python - 使用 BeautifulSoup 创建 URL 列表时出现问题

java - 为什么要将内部类外部字段的修饰符改为final?

java - 为什么我需要在 @Override[inner class] 方法中将变量转换为最终数组?

java - 开始使用 OpenID

java - 在 Java 中隐藏输出文本

java - spring-security 登录?注销重定向到登录