【问题标题】:Why it gives error if I try to get the value of a boolean @Transient variable using lombok?如果我尝试使用 lombok 获取布尔 @Transient 变量的值,为什么会出错?
【发布时间】:2020-06-24 04:33:20
【问题描述】:
@Data
public class show{
    @Transient
    private boolean value;
}

show ob = new show();

ob.getValue() //throws an error
ob.isValue() //runs smoothly

为什么会这样?如果我使用布尔值而不是布尔值,我可以获得变量的值。如果我使用原始数据类型,为什么我无法获取值?

【问题讨论】:

标签: spring jpa


【解决方案1】:

Lombok 的默认行为是使用前缀 isXXX() 公开布尔 Java 方法,而不是使用 getXXX() 命名方案。您所看到的只是标准行为。

如果您想覆盖 Lombok 的默认 isXXX() 命名方案,您可以提供自己的 getter:

@Getter(AccessLevel.NONE)     // turn off Lombok here
private boolean value;

public boolean getValue() {
    return value;
}

【讨论】:

    【解决方案2】:

    使用 Lambok 时,用于类型 boolean 的默认 getter 和 setter 分别为 isValue()setValue(boolean value)。而对于 Boolean 类型,使用的 getter 和 setter 是 getValue() setValue(Boolean value)

    通过在字段顶部粘贴 @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) 并编写自己的 getter 和 setter 来禁用 Lombok 字段

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多