scala - 是否有可能强迫对象不变?

ope*_*sas 3 functional-programming scala immutability

我的意思是,如果有一些声明性的方法来阻止对象更改其任何成员.

在以下示例中

class student(var name:String)

val s = new student("John")
Run Code Online (Sandbox Code Playgroud)

"s"已被宣布为val,所以它总是指向同一个学生.

但有没有办法防止s.name被改为只是声明它像不可变的???

或者唯一的解决方案是将所有内容声明为val,并手动强制不变性?

Mat*_*ell 6

不,不可能宣布一些不可变的东西.你必须自己强制执行不变性,不允许任何人改变它,这就是删除所有修改类的方法.

有人仍然可以使用反射修改它,但这是另一个故事.