构造器参数
在一个类中,对于 Scala 主构造器的一个形参而言,
- 如果没有使用任何修饰符,那么这个形参是局部变量
- 如果使用 val 关键字声明,那么这个形参会作为类的一个私有的只读属性
- 如果使用 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) {}
<a name="bdUcl"></a>
# Bean 参数
JavaBeans 规范:定义了 Java 的属性可以是像 _**getXxxx/setXxx**_ 的方法,许多 Java 工具/框架都依赖这个命名习惯<br />为了和 Java 的互操作性,可以给 Scala 属性加上 _**@BeanProperty**_ 注解,此时对于该属性可以使用 getter/setter 方法【**具体使用反编译工具查看**】
```scala
// 自行测试
import scala.beans.BeanProperty
object Test {
def main(args: Array[String]): Unit = {
val p1 = new Person
p1.setName("lisi")
println(p1.getName) // lisi
}
}
class Person {
@BeanProperty var name: String = "zhangsan"
}