@Accessors注解的作用

1.@Accessors注解的作用

(1)该注解主要作用是:当属性字段在生成 getter 和 setter 方法时,做一些相关的设置。

(2)当它可作用于类上时,修饰类中所有字段,当作用于具体字段时,只对该字段有效。

  通过源码可以看到该注解有三个属性:fluent,chain,prefix

package lombok.experimental;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.SOURCE)
public @interface Accessors {
    boolean fluent() default false;

    boolean chain() default false;

    String[] prefix() default {};
}

2.1 当注解的属性为fluent时,不写默认fluent属性的值为false。当属性fluent属性的值为true时,对应的getter和setter方法的方法名会去掉get和set前缀。为值false则不会,如下图所示。

@Data
@Accessors(fluent = true)
public class User {
    private String userId;
    private String userName;
    private int age;
    public static void  main(){
        User user=new User();
        user.userName("张三");
        user.age(18);
        String id = user.userId();
    }
}

2.2当注解的属性为chain时,不写默认为false。当chain的值为true时,调用setter方法会返回当前的对象。如下图所示

@Data
@Accessors(chain  = true)
public class User {
    private String userId;
    private String userName;
    private int age;
    public static void  main(){
        User user=new User().setUserId("001").setUserName("张三");
        User user1 = user.setAge(19);
    }
}

2.3当注解的属性为prefix时,prefix的属性值是一个字符串数组,当他有值时,生成的getter和setter方法会去掉prefix值中的前缀。如User的属性为gameUserName,gameUserId,gameUserAge。此时如果prefix={"game"},则生成的getter和setter方法将没有game前缀。如下图所示

@Data
@Accessors(prefix  = {"game"})
public class User {
    private String gameUserId;
    private String gameUserName;
    private int gameUserAge;
    public static void  main(){
       User user=new User();
       user.setUserAge(18);
       user.getUserName();
       user.setUserId("123");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值