在之前的几天,我们系统学习了Lombok的常见注解,并且将其官网stable中的所有注解都讲解了一编,接下来会通过两到三天的时间将Lombok目前正在试验的(experimental)注解简单过一遍,以下为experimental状态的所有注解。
@Accessors
@Accessors注解用于配置生成的getter和setter方法的访问级别和命名方式
接下来介绍的很多Lombok注解都不建议使用,因为Lombok后续增加的很多注解都与其设计初衷相违背,具体的使用建议我会在Lombok注解讲解的最后根据我的使用经验简单讲一下
1、如何使用
- 注解在需要控制Getter、Setter方法访问级别和命名方式的地方(为@Getter、@Setter提供升级版功能)。
- @Accessors可以使用以下属性进行配置:
chain:boolean类型,默认为false。如果设置为true,则生成的setter方法返回this,以支持链式调用。
fluent:boolean类型,默认为false。如果设置为true,则生成的getter和setter方法的方法名不带get和set前缀。
prefix:String类型,默认为空字符串。设置生成的getter和setter方法的前缀。
使用@Accessors可以在类级别和属性级别进行配置。在类级别配置时,会为该类中的所有属性生成相同的访问级别和命名方式。在属性级别配置时,可以为每个属性单独指定不同的配置。
2、代码示例
例:
@ToString
@Getter
@Setter
@Accessors(chain = true, fluent = true, prefix = "my")
public class AccessorsExample {private String myName;private int myAge;public static void main(String[] args) {AccessorsExample example = new AccessorsExample().name("John").age(30);System.out.printf("Age" + example.age());}
}
编译后:在上面的示例中,我们在类级别使用@Accessors注解配置了链式调用、去除前缀的属性。因此,我们可以通过链式调用的方式设置属性的值,并且生成的getter和setter方法的方法名不带get和set前缀。在Main方法中,我们创建了一个对象,并使用生成的setter方法设置属性的值。最后,打印该对象的age属性时,也没有指定是通过getter方法获取属性值。
public class AccessorsExample {private String myName;private int myAge;public AccessorsExample() {}public static void main(String[] args) {AccessorsExample example = (new AccessorsExample()).name("John").age(30);System.out.printf("Age" + example.age());}@Generatedpublic String toString() {return "AccessorsExample(myName=" + this.name() + ", myAge=" + this.age() + ")";}@Generatedpublic String name() {return this.myName;}@Generatedpublic int age() {return this.myAge;}@Generatedpublic AccessorsExample name(String myName) {this.myName = myName;return this;}@Generatedpublic AccessorsExample age(int myAge) {this.myAge = myAge;return this;}
}
运行结果: