Amos的随笔

Java/Python/Go,软件测试等等

导航

【lombok】@Getter @Setter 和 public Object getFoo() {return foo;} 说拜拜

@Getter @Setter

您可以使用@Getter和/或@Setter注释任何字段(类属性),让lombok自动生成默认的get方法 / set方法。

默认的getter返回该字段(被@Getter注释的字段),如果字段名为foo,则命名为getFoo(如果字段的类型为boolean,则命名为isFoo)

默认的setter返回为void,如果字段名为foo,则命名为setFoo。生成的setter方法有1个入参与该字段类型一致,且将字段设置为此值。

除非您明确指定生成的方法访问级别,否则生成的getter / setter方法默认是public。如下面的代码示例所示,合法访问级别为PUBLICPROTECTEDPACKAGEPRIVATE

您还可以在类上放置@Getter和/或@Setter注释。在这种情况下,就等同于使用了@Getter和/或@Setter注释该类中的所有非静态字段。

您始终可以使用特殊的AccessLevel.NONE访问级别,手动禁用任何字段的getter / setter生成。这使您可以覆盖类上@Getter,@ Setter或@Data注释的行为。

要在生成的方法上添加注释,可以使用onMethod = @ __({@ AnnotationsHere});要将注释放在生成的setter方法的唯一参数上,可以使用onParam = @ __({@ AnnotationsHere})。但要小心!这是一个实验性功能。有关更多详细信息,请参阅有关onX(实验性)功能的文档。

lombok v1.12.0中的新功能

现在将字段上的javadoc复制到生成的getter和setter。通常所有文本都被复制,@return被移动到getter方法上,而@param行被移动到setter方法。移动的意思是指:从字段的javadoc中删除,也会为每个getter / setter定义唯一的文本。因此您可以创建名为GETTER和/或SETTER的“section”, section是javadoc中包含2个或更多短划线的行,然后是文本’GETTER’或’SETTER’,后跟2个或更多破折号,行上没有其他内容。如果使用sections,则不再执行@return和@param剥离该section(将@return或@param行移动到该节中)。 译者注 : 没搞太明白

看代码

package com.amos.lombok;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

public class GetterSetterExample {

    /**
     * Age of the person. Water is wet.
     *
     * @param age New value for this person's age. Sky is blue.
     * @return The current value of this person's age. Circles are round.
     */
    @Getter
    @Setter
    private int age = 10;

    /**
     * Name of the person.
     * -- SETTER --
     * Changes the name of this person.
     *
     * @param name The new value.
     */
    @Setter(AccessLevel.PROTECTED)
    private String name;

    @Override public String toString() {
        return String.format("%s (age: %d)", name, age);
    }
    
}

编译后的class文件

package com.amos.lombok;

public class GetterSetterExample {
    private int age = 10;
    private String name;

    public GetterSetterExample() {
    }

    public String toString() {
        return String.format("%s (age: %d)", this.name, this.age);
    }

    public int getAge() {
        return this.age;
    }

    public void setAge(final int age) {
        this.age = age;
    }

    protected void setName(final String name) {
        this.name = name;
    }
}

可以看出,lombok已经自动帮助我们生成了setXXX和getYYY的方法。对于属性非常多的类,效率提升杠杠的,且代码更简洁,没有尝试过的赶紧试试吧。

本章节完!

posted on 2019-01-19 16:26  AmosChen  阅读(3)  评论(0编辑  收藏  举报  来源