布尔字段的 Lombok 注释 @Getter

Lombok annotation @Getter for boolean field

我正在使用 Java lombok 注释 @Getter 为我的 POJO 生成 getter。我有一个名为 isAbc.

boolean 字段

本例中的 @Getter 注释生成一个名为 isAbc() 的方法。它不应该生成一个名为 isIsAbc() 的方法吗?

阅读 lombok 页面上的 'small print' 部分 https://projectlombok.org/features/GetterSetter.html

For boolean fields that start with is immediately followed by a title-case letter, nothing is prefixed to generate the getter name.

所以您遇到的行为是指定的。

请注意,booleanBoolean 的行为不同:

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

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

@Getter
private Boolean isGood; // => getIsGood()

我针对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

如果名称已经以 is 开头后跟大写字母,如 isGood.

,Lombok 不会以 is 作为前缀

您可能会遇到像 canDelete 这样的名称,它会生成名称为 isCanDelete 的 getter。为避免这种情况,您可以使用 fluent 参数:

@Getter(fluent = true)
private boolean canDelete;

或(取决于版本):

@Getter
@Accessors(fluent = true)
private boolean canDelete;

在这种情况下,它将保留名称,因此 getter 变为 canDelete()