Scala 中的 public 属性,底层实际为 private,并通过 get 方法(obj.field())和 set 方法
(obj.field_=(value))对其进行操作。
所以 Scala 并不推荐将属性设为 private,再为其设置public 的 get 和 set 方法的做法。
import scala.beans.BeanProperty
object Lambda {
def main(args: Array[String]): Unit = {
val student = new Student1()
println(student.age)
println(student.sex)
//实际是通过封装的好的get set 访问的
student.sex = "female"
println(student.sex)
}
}
class Student1 {
//不推荐
private var name: String = "alice"
@BeanProperty //创建了age的javaBean规范的get set
var age: Int = _
var sex: String = _
}
但由于很多 Java 框架都利用反射调用 getXXX 和 setXXX 方
法,有时候为了和这些框架兼容,也会为 Scala 的属性设置 getXXX 和 setXXX 方法(通过
@BeanProperty 注解实现)。