Java 中,一个 final 的 List 变量,被往里加了元素,算不算违反了 final 这个关键词在这里暗示的约定?
2021-12-31 10:44:16 +08:00
Newyorkcity
final 关键词在 java 中,只能保证变量的值不变,但如果变量的值是一个本身提供了修改自身的方法的对象,那调用这一方法对值(内部)做修改,final 是约束不到的。
然而这样的修改,是否是违背了 final 这个关键词放在这里时暗示的约定——该变量是不可变的?或者说,如果让一个全知全能的家伙来编写 Java ,它是否会为 final 所修饰的变量保证无论如何都无法被修改而不仅仅只是引用无法被修改的限制?(也就是说,java 之所以不能实现到这一步,是否可能是因为在编译器层面强制实现这一程度所需要的工程量太大划不来)