Java提供JavaBean作为数据对象的封装, 而对于Scala来说也提供了同样的支持.
class Apple { var weight: Float = _ var color: String = _ }
Scala无需向JavaBean那样显示的声明 getter和setter , 只需将变量声明为var就可以了, getter方法 weight , setter方法为 weight_= ; 同时, 在JavaBean中的变量可以不用初始化, 但是在Scala中需要初始化为_, _的具体值由变量的类型决定, 对于数值型的为0, Boolean的为false, 引用类型为null.
public class JavaApple { private int age; // right } class ScalaApple { var age: Int // wrong var age: Int = _ // right, 0 }
关于@BeanProperty
然而许多已有的Java库依然需要使用JavaBean的getter和setter方法, 而不是ScalaBean的setter和getter, 这种情况下会报错. 为了解决这个问题, Scala引入的额@BeanProperty注解, 在变量上标注该注解, Scala编译器会自动生成getter个setter方法.
class ScalaApple { @BeanProperty var age: Int = _ }