• 将Lombok @Getter用于boolean 和Boolean 字段


    1. 简介

    Project Lombok是一个流行的库,用于减少 Java 样板。

    在这个快速教程中,我们将看看 Lombok@Getter注释如何在布尔字段上工作,以消除创建其相应 getter 方法的需要。

    2. Maven 依赖

    让我们首先将龙目岛项目添加到我们的pom.xml

    1. <dependency>
    2. <groupId>org.projectlombok</groupId>
    3. <artifactId>lombok</artifactId>
    4. <version>1.18.20</version>
    5. </dependency>
    Copy

    3. 在boolean 字段上使用@Getter

    假设我们希望 Lombok 为我们的私有布尔字段生成一个访问器方法。

    我们可以通过以下方式注释该字段@Getter

    1. @Getter
    2. private boolean running;
    Copy

    Lombok 将使用其注释处理器在类中生成isRunning() 方法。

    现在,我们可以参考它,即使我们自己没有编写方法:

    1. @Test
    2. public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() {
    3. LombokExamples lombokExamples = new LombokExamples();
    4. assertFalse(lombokExamples.isRunning());
    5. }
    Copy

    3.1. 与其访问器同名的boolean 字段

    让我们添加另一行代码,使示例有点棘手:

    1. @Getter
    2. private boolean isRunning = true;
    Copy

    如果 Lombok 创建了一个名为isIsRunning 的方法,那就有点麻烦了。

    相反,龙目岛像以前一样创建isRunning

    1. @Test
    2. public void whenBooleanFieldPrefixedWithIs_thenMethodNameIsSameAsFieldName() {
    3. LombokExamples lombokExamples = new LombokExamples();
    4. assertTrue(lombokExamples.isRunning());
    5. }
    Copy

    3.2. 两个具有相同访问器名称的boolean 字段

    有时,可能会有冲突。

    假设我们需要在同一类中有以下行:

    1. @Getter
    2. public boolean running = true;
    3. @Getter
    4. public boolean isRunning = false;
    Copy

    我们应该避免像这样令人困惑的命名约定的原因有很多。其中之一是它为龙目岛制造了冲突。

    使用龙目岛的约定,这两个字段将具有相同的访问器方法名称:isRunning。但是,在同一类中具有两个同名的方法将创建编译器错误。

    Lombok 通过仅创建一个访问器方法并在本例中根据字段声明顺序将其指向正在运行来解决此问题:

    1. @Test
    2. public void whenTwoBooleanFieldsCauseNamingConflict_thenLombokMapsToFirstDeclaredField() {
    3. LombokExamples lombokExamples = new LombokExamples();
    4. assertTrue(lombokExamples.isRunning() == lombokExamples.running);
    5. assertFalse(lombokExamples.isRunning() == lombokExamples.isRunning);
    6. }
    Copy

    4. 在Boolean 字段上使用@Getter

    现在,龙目岛对待Boolean 类型的方式略有不同。

    让我们最后一次尝试相同的运行示例,但使用Boolean 而不是基元类型:

    1. @Getter
    2. private Boolean running;
    Copy

    Lombok 不会创建isRunning,而是生成getRunning

    1. @Test
    2. public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() {
    3. LombokExamples lombokExamples = new LombokExamples();
    4. assertTrue(lombokExamples.getRunning());
    5. }
    Copy

    5. 结论

    在本文中,我们探讨了如何将龙目岛的@Getter注释用于布尔基元和布尔对象。

    并确保在Github上查看示例。

  • 相关阅读:
    队列--二叉树层序遍历
    python中scipy中uniform分布怎么用
    RabbitMQ安装配置,封装工具类,发送消息及监听
    MySql(40)覆盖索引和索引下推
    java 企业工程管理系统软件源码 自主研发 工程行业适用
    【Linux】nohub指令--终端退出后命令仍旧执行
    黑马笔记---常见数据结构
    Windows 文件共享
    VMware16安装RedHat7.6步骤
    快速或安全的访问std::vector实例的方法, std::vector的插入排序
  • 原文地址:https://blog.csdn.net/allway2/article/details/128005626