【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行移动到该节中)。译者注 : 没搞太明白

看代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35


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文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

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的方法。对于属性非常多的类,效率提升杠杠的,且代码更简洁,没有尝试过的赶紧试试吧。

本章节完!