所以从我对final的理解后你不能改变变量的值。在private final foo HashSet<>() = new HashSet<>()
的情况下,我可以使用foo作为HashSet并编辑其中的值,但我无法重新分配foo吗?
答案 0 :(得分:4)
final
会阻止您为变量分配任何新值,但它不会使您的对象不可变。
在您的示例中,
private final foo HashSet<String>() = new HashSet<>();
foo.put("bar"); // is correct
foo = new HashSet<>(); // will fail at compilation