Scala字段自动生成getter和setter并给getter加注解

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",
                    ) {

}

这是一种给注解加上注解的写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值