构造器参数

在一个类中,对于 Scala 主构造器的一个形参而言,

  1. 如果没有使用任何修饰符,那么这个形参是局部变量
  2. 如果使用 val 关键字声明,那么这个形参会作为类的一个私有的只读属性
  3. 如果使用 var 关键字声明,那么这个形参会作为类的一个私有的可读写属性 ```scala // 自行测试 object Test { def main(args: Array[String]): Unit = { val p1 = new Person1(“zhangsan”) val p2 = new Person2(“lisi”) print(p1.name + “ “ + p2.name) // zhangsan lisi p1.name = “haha” // error(该行注释后运行就可以通过) p2.name = “haha” // correct } }

class Person1(val name: String) {} class Person2(var name: String) {}

  1. <a name="bdUcl"></a>
  2. # Bean 参数
  3. JavaBeans 规范:定义了 Java 的属性可以是像 _**getXxxx/setXxx**_ 的方法,许多 Java 工具/框架都依赖这个命名习惯<br />为了和 Java 的互操作性,可以给 Scala 属性加上 _**@BeanProperty**_ 注解,此时对于该属性可以使用 getter/setter 方法【**具体使用反编译工具查看**】
  4. ```scala
  5. // 自行测试
  6. import scala.beans.BeanProperty
  7. object Test {
  8. def main(args: Array[String]): Unit = {
  9. val p1 = new Person
  10. p1.setName("lisi")
  11. println(p1.getName) // lisi
  12. }
  13. }
  14. class Person {
  15. @BeanProperty var name: String = "zhangsan"
  16. }