编辑 Lombok getter 方法名以适应具有前缀“has”的布尔成员

39

我在lombok中有一个布尔变量hasObject,它生成了isHasObject()方法。我正在使用@Data lombok注解。如何将该方法更改为hasObject()


5
考虑更改您的字段名称,例如boolean objectPresent。然后您可以遵循getter/setter命名模式,您的getter将变为isObjectPresent() - Fabian Barney
2
根据API文档,我必须坚持使用“has”前缀。因此,我没有那个特权。 - mwKART
1
可能是Lombok如何为布尔对象字段自定义getter?的重复问题。 - Tyler
这个回答解决了你的问题吗?Lombok注释@Getter用于布尔字段 - E-Riz
5个回答

30

在您的情况下可能是:

 class XY : Object {
      @Getter(fluent = true)
      public boolean hasObject;
 }

或者

 @Accessors(fluent = true)
 class XY : Object {
      public boolean hasObject;
 }

根据文档:

流畅 - 一个布尔值。如果为真,pepper的getter将仅为pepper(),setter为pepper(T newValue)。此外,除非指定,chain默认为true。 默认值:false。


2
主要问题是它不仅适用于一个变量 :-/ @Getter(fluent=true) 在1.18.6.0版本中无法使用,而@Accessor太过强大,因为它会影响整个类。 - LeO
17
@Getter(fluent = true)编译不通过。 - dan carter
1
如此回答所述,访问器可以用于字段。 - tabata

25

我从 lombok-how-to-customise-getter-for-boolean-object-field 找到了帮助。 通过这个方法,我将能够改变访问级别并使用传统的代码getter。

@Getter(AccessLevel.NONE) private boolean hasObject;

public boolean hasObject() {
    return hasObject;
}

我将保持这个问题处于开放状态。这是更改getter方法名称的唯一方式吗,还是我应该等待更好的建议。


嗨,我投票反对这个答案,因为它在5年内发生了变化,而@Rami在2022年5月11日的答案是最好的(在我看来)。 - klenkes74
1
@klenkes74 我不同意你的负评,因为当使用 Data 时 Accessor 修改了 getter 和 setter,所以这仍然是最好的答案,符合 OP 最初修改 getter 的问题。 - CodeMonkey

23

结合AccessorsGetter,你可能会得到以下内容:

 class ExampleClass {
      @Accessors(fluent = true)
      @Getter
      private boolean hasObject;
 }

是 Vanilla Java 的等效版本:

class ExampleClass {
    
    private boolean hasObject;

    public hasObject() {
        return hasObject;
    }

我猜这就是你想要的。


8
就像这样:
 @Data
 class ExampleClass {
     
      private Object data;

      @Accessors(fluent = true)
      private boolean hasObject;
 }

这将提供getData()hasObject()方法。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接