为什么允许scala中的最终变量更改值
为什么允许
Scala中的最终变量更改值.根据我的理解,一旦宣布最终,他们不应该被允许改变.
class foo() { final var name = "abc" name = "xyz" // why this is allowed } 解决方法
每
Scala Specification的最终定义(强调我的):
5.2.6最终
由于Scala中的val定义已经意味着对它的引用是不可变的(与Java不同),因此在定义它时不必明确指定它.如果希望将值作为字节代码中的常量内联,则可以指定添加最终修饰符. 根据var,final在这里仅表示“可能不会在子类中被覆盖”,但是对变量的不变性没有任何说明: scala> :pa // Entering paste mode (ctrl-D to finish) class Foo { final var name = "abc" } class Bar extends Foo { override var name = "yuval" } // Exiting paste mode,now interpreting. <console>:16: error: overriding variable name in class Foo of type String; variable name cannot override final member override var name = "yuval" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |