当前位置: 首页 > 知识库问答 >
问题:

如果我尝试使用lombok获取布尔@瞬态变量的值,为什么会出错?

充运浩
2023-03-14
@Data
public class show{
    @Transient
    private boolean value;
}

show ob = new show();

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

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

共有2个答案

轩辕炎彬
2023-03-14

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

@Getter(AccessLevel.NONE)@Setter(AccessLevel.NONE)粘贴在字段顶部,为不需要的字段禁用Lombok,并编写自己的Getter和Setter

邵诚
2023-03-14

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

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

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

public boolean getValue() {
    return value;
}
 类似资料:
  • 例如: 但是你可以在块之前声明它,然后它就可以正常工作了: 我只是想知道这样做的设计原因。为什么在块中创建的对象不在方法其余部分的范围内?也许我没有深入了解除了只是观察抛出的之外是如何工作的。

  • 问题内容: 瞬态关键字将用于防止特定变量的序列化。但是为什么我们不应该序列化数据呢?有内部安全感吗? 问题答案: 有些类本质上是不可序列化的,因为它们表示Manage Java环境之外的资源。例如,a 不能真正序列化,因为它表示一个打开的文件句柄。对于a同样如此:您无法保存和恢复“打开的套接字”。 如果要序列化具有该类型字段的对象,则必须将这些字段标记为瞬态。 使用的另一个原因是您的类进行某种内部

  • 我的主活动中有一个布尔私有字段变量,该变量设置为false: 创建acccount时,我将其设置为true: 但是布尔值不会从假变为真。上面显示的代码位于MainActivity.java类和一个公共void方法中。我希望这个布尔值改变,因为如果为false,用户不能玩,如果为true,用户将能够玩。

  • 问题内容: 我正在阅读 有效Java中的 序列化一章。 谁调用readObject()和writeObject()?为什么将这些方法声明为私有? 下面是书中的一段代码 是否有任何特定原因将变量声明为瞬时变量,然后在writeObject方法中将其显式写入?如果未声明为瞬态,则无论如何都应该编写它,对吗? 问题答案: (1)方法未在任何类或接口中声明。一个实现接口并需要 在序列化和反序列化过程中进行

  • 问题内容: 这是我在使用const时遇到的错误: 我的代码如下所示: 只有JSHint每次都警告我,代码才能正常工作。 问题答案: 当依赖ECMAScript 6功能(例如)时,应设置此选项,以使JSHint不会引发不必要的警告。 顾名思义,此选项告诉JSHint您的代码使用ECMAScript 6特定语法。 http://jshint.com/docs/options/#esversion 编辑

  • 我正在使用MQ Java PCF API从MQ安装中检索信息。类PCFMessageAgent有几个构造函数。有一个接受主机、端口和通道名称。我展示了文档的摘录。 为什么我会得到这个错误?我怎么解决这个。 我在错误日志中找到了这个。任何帮助都将不胜感激。