【发布时间】:2015-10-20 18:08:48
【问题描述】:
所以根据我对 final 的理解,你不能改变变量 after 的值。在private final foo HashSet<>() = new HashSet<>() 的情况下,我可以使用 foo 作为 HashSet 并编辑其中的值,但我不能重新分配 foo 对吗?
【问题讨论】:
所以根据我对 final 的理解,你不能改变变量 after 的值。在private final foo HashSet<>() = new HashSet<>() 的情况下,我可以使用 foo 作为 HashSet 并编辑其中的值,但我不能重新分配 foo 对吗?
【问题讨论】:
final 会阻止您为变量分配任何新值,但不会使您的对象不可变。
在你的例子中,
private final foo HashSet<String>() = new HashSet<>();
foo.put("bar"); // is correct
foo = new HashSet<>(); // will fail at compilation
【讨论】: