Scala自动生成getter和setter
使用Scala类,但又要使这个类兼容java的框架如spring boot,需要给类的变量加上java bean风格的getter和setter。
为此可以使用 @BeanProperty注解。例如:
import scala.beans.BeanProperty
class Person {
@BeanProperty var name: String = _
}
此注解对 val 和 var 都有效。对于 val 程序只生成 getter,而对 var,程序会生成 getter 和 setter
只对getter加注解
如果我们还需要对字段加别的注解,可以直接写在字段上。但如果直接写,生成的程序只有java的字段会获得注解。这个注解对 getter 和 setter 是无效的。
如果还要对 getter 加注解,则需要使用到 scala.annotation.meta 下的注解,给需要加的注解加注解。
例如,我们要对字段在做json序列化时使用一个别的名称而不是字段名,可以使用 JsonProperty 注解(注意是com.fasterxml.jackson.annotation.JsonProperty)。要将这个注解加到生成的getter上,就可以按下面例子使用。
class OpenIDUserInfo(
@BeanProperty var sub: String,
@BeanProperty @(JsonProperty @beanGetter)(value = "given_name") var givenName: String,
@BeanProperty var nickname: String,
@BeanProperty @(JsonProperty @beanGetter)(value = "family_name") var familyName: String,
@BeanProperty var email: String,
@BeanProperty var picture: String,
@BeanProperty @(JsonProperty @beanGetter)(value = "preferred_username") var preferredUsername: String = "oauth_preferred_username",
) {
}
这是一种给注解加上注解的写法。