@Getter and @Setter

@Getter and @Setter

永远不要再写public int getFoo() {return foo;}了。

Overview

您可以使用@Getter和/或@Setter注释任何字段,让lombok自动生成默认的getter / setter。
默认的getter只返回该字段,如果该字段是foo(或者isFoo字段的类型是boolean),则命名为getFoo。如果字段被是foo,默认的setter命名为setFoo且返回一个 void,并接收1个与该字段相同类型的参数。它只是将字段设置为此值。

生成的getter / setter方法将是public除非您明确指定AccessLevel,如下面的示例所示。逻辑访问级别PUBLICPROTECTEDPACKAGE,和PRIVATE

您还可以在类上放置@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。一个部分是你的javadoc中包含2个或更多短划线的行,然后是文本'GETTER'或'SETTER',后面是2个或更多的破折号,行上没有其他内容。如果您使用的部分,@return@param剥离该部分不再做(移动@return@param进线部分)。

With 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);
  }
}

Vanilla Java

public class GetterSetterExample {
  /**
   * Age of the person. Water is wet.
   */
  private int age = 10;

  /**
   * Name of the person.
   */
  private String name;
  
  @Override public String toString() {
    return String.format("%s (age: %d)", name, age);
  }
  
  /**
   * Age of the person. Water is wet.
   *
   * @return The current value of this person's age. Circles are round.
   */
  public int getAge() {
    return age;
  }
  
  /**
   * Age of the person. Water is wet.
   *
   * @param age New value for this person's age. Sky is blue.
   */
  public void setAge(int age) {
    this.age = age;
  }
  
  /**
   * Changes the name of this person.
   *
   * @param name The new value.
   */
  protected void setName(String name) {
    this.name = name;
  }
}

Supported configuration keys:

lombok.accessors.chain = [true | false] (default: false)
如果设置为true,则生成的setter将返回this(而不是void)。显式配置chain@Accessors注释参数优先于此设置。
lombok.accessors.fluent = [true | false] (default: false)
如果设置为true,生成的getter和setter将不会以bean标准为前缀getisset; 相反,这些方法将使用与字段相同的名称(减去前缀)。显式配置chain@Accessors注释参数优先于此设置。
lombok.accessors.prefix += a field prefix (default: empty list)
这是一个列表属性; 条目可以与+=操作符一起添加。可以使用-=运算符删除父配置文件中的继承前缀。Lombok将从字段名称中删除任何匹配的字段前缀,以确定要生成的getter / setter的名称。例如,如果m在此设置中列出的前缀之一,那么一个名为场mFoobar将导致一个名为吸气getFoobar(),没有getMFoobar()。显式配置prefix@Accessors注释参数优先于此设置。
lombok.getter.noIsPrefix = [true | false] (default: false)
如果设置为true,则为boolean字段生成的getter 将使用get前缀而不是默认is前缀,并且任何生成的调用getter的代码(例如)@ToString也将使用get而不是is
lombok.setter.flagUsage = [warning | error] (default: not set)
如果配置, Lombok会将任何@Setter用法标记为警告或错误。
lombok.getter.flagUsage = [warning | error] (default: not set)
如果配置, Lombok会将任何@Getter用法标记为警告或错误。
lombok.copyableAnnotations = [A list of fully qualified types] (default: empty list)
Lombok会将任何这些注释从字段复制到setter参数和getter方法。请注意,lombok附带了一堆“开箱即用”的注释,这些注释已知是可复制的:所有流行的可空/非空注释。

Small print

为了生成方法名称,字段的第一个字符(如果是小写字符)是标题字符,否则,它保持不变。然后,get / set /是前缀。

如果已存在具有相同名称(不区分大小写)和相同参数计数的任何方法,则不会生成任何方法。例如,即使在技术上可以制作方法,getFoo()如果已经有方法getFoo(String... x)也不会生成。这个警告是为了防止混淆。如果由于这个原因跳过了方法的生成,则会发出警告。Varargs计为0到N个参数。你可以标记任何方法@lombok.experimental.Tolerate来隐藏它们从lombok。

对于booleanis紧跟着标题大小写字母开头的字段,不会生成任何前缀以生成getter名称。

任何变化boolean不会导致使用is前缀而不是get前缀; 例如,返回java.lang.Boolean的结果get前缀,而不是一个is前缀。

来自流行库的许多注释表示非空性,例如javax.annotation.Nonnull,如果存在于字段上,则导致生成的setter中的显式空检查。

关于可空性的各种众所周知的注释(例如org.eclipse.jdt.annotation.NonNull)会自动复制到正确的位置(getter的方法,setter的参数)。您可以指定应始终通过lombok 配置密钥 复制的其他注释lombok.copyableAnnotations

您可以使用@Getter@Setter注释来注释类。这样做等同于使用该批注对该类中的所有非静态字段进行批注。字段上的@Getter/ @Setter注释优先于类上的注释。

使用AccessLevel.NONE访问级别根本不生成任何内容。它是有用的,只有结合@Data或类范围@Getter@Setter

@Getter也可用于枚举。@Setter不能,不是出于技术原因,而是出于务实的原因:在枚举上setter是一个非常糟糕的主意。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容