【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。如下面的代码示例所示,合法访问级别为
PUBLIC
,PROTECTED
,PACKAGE
和PRIVATE
。
您还可以在类上放置@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的方法。对于属性非常多的类,效率提升杠杠的,且代码更简洁,没有尝试过的赶紧试试吧。
本章节完!