Lombok注释@Getter用于布尔字段

Nit*_*mar 24 java lombok

我使用Java lombok注释@Getter为我的POJO生成getter.我有一个名为'isAbc'的'boolean'字段.在这种情况下,@ Getter注释通过名称'isAbc()'生成一个方法.它不应该通过名称'isIsAbc()'生成一个方法吗?

Har*_*ebe 57

阅读lombok页面上的"小字体"部分https://projectlombok.org/features/GetterSetter.html

对于以开头的布尔字段后面紧跟着标题大小写字母,没有任何前缀来生成getter名称.

因此,您遇到的行为是指定的.

注意行为是不同的booleanBoolean:

@Getter
private boolean isGood; // => isGood()

@Getter
private boolean good; // => isGood()

@Getter
private Boolean isGood; // => getIsGood()
Run Code Online (Sandbox Code Playgroud)

  • @dit我的答案与现有答案没有任何不同,只是附加一些注意事项. (3认同)
  • 那些情况下的setter怎么样? (2认同)

小智 12

我针对lombok(1.16.8)做了一些测试,结论如下。

private Boolean good;

getter => getGood()              Boolean
setter => setGood(Boolean good)  void 


private boolean good;

getter => isGood()               boolean
setter => setGood(boolean good)  void 


private Boolean isGood;

getter => getIsGood()            Boolean
setter => setIsGood()            void 


private boolean isGood;

getter => isGood()               boolean
setter => setGood(boolean good)  void
Run Code Online (Sandbox Code Playgroud)

  • 如何强制 Lombok 为“Boolean isGood”等非原始类型的 getter 生成 isGood ? (7认同)

Ken*_*sen 6

is如果名称已经以开头开头,则Lombok 不以前缀开头,is后跟大写字母,如isGood

您可能会遇到类似canDelete这样的名称,因为它会生成一个带有名称的吸气剂isCanDelete。为避免这种情况,您可以使用以下fluent参数:

@Getter(fluent = true)
private boolean canDelete;
Run Code Online (Sandbox Code Playgroud)

或(取决于版本):

@Getter
@Accessors(fluent = true)
private boolean canDelete;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它将保留名称不变。