📜  Java Lombok项目简介以及如何入门?

📅  最后修改于: 2021-05-20 08:21:47             🧑  作者: Mango

龙目岛有什么需要?
Java是一种非常流行的语言,但是没有什么缺点。最受欢迎的缺点之一是,我们仍然需要用Java编写类似getter,setter,toString方法的样板代码,而同样基于JVM的Kotlin和Scala则不需要,因此,这就是它们增加的原因。在社区中的受欢迎程度。这就是Lombok发挥作用的地方,它克服了Java的这一缺点。

什么是龙目岛?
Lombok项目是一个Java库工具,用于通过使用一些注释来最小化/删除样板代码,并在开发过程中节省开发人员的宝贵时间。除此之外,它还提高了源代码的可读性并节省了空间。但是您可能会认为,如今,每个人都使用IDE,它提供了生成这些样板代码的选项,那么Lombok的用途是什么。每当我们使用IDE生成这些样板代码时,我们只是避免编写所有这些代码,而是将其实际存在于我们的源代码中,并增加了LOC(代码行)并降低了可维护性和可读性。另一方面,Lombok在编译时将所有这些样板代码添加到“ .class”文件中,而不是在我们的源代码中。

让我们比较使用和不使用Lombok的源代码。

  • 没有Lombok:一个Java模型类,具有四个私有字段以及它们的getter,setter,无args构造函数,参数化构造和toString方法。
    public class Employee {
      
        private Integer employeeId;
        private String name;
        private String company;
        private String emailId;
      
        public Employee()
        {
        }
      
        public Employee(Integer employeeId, String name,
                        String company, String emailId)
        {
            super();
            this.employeeId = employeeId;
            this.name = name;
            this.company = company;
            this.emailId = emailId;
        }
      
        public Integer getEmployeeId()
        {
            return employeeId;
        }
      
        public void setEmployeeId(Integer employeeId)
        {
            this.employeeId = employeeId;
        }
      
        public String getName()
        {
            return name;
        }
      
        public void setName(String name)
        {
            this.name = name;
        }
      
        public String getCompany()
        {
            return company;
        }
      
        public void setCompany(String company)
        {
            this.company = company;
        }
      
        public String getEmailId()
        {
            return emailId;
        }
      
        public void setEmailId(String emailId)
        {
            this.emailId = emailId;
        }
      
        @Override
        public String toString()
        {
            return "Employee ["
                + "employeeId=" + employeeId
                + ", name=" + name + ", "
                + " company=" + company
                + ", emailId=" + emailId
                + "]";
        }
    }
    
  • 使用Lombok: Java模型类,具有四个私有字段以及使用Lombok批注的其getter,setter,无args构造函数,参数化构造和toString方法。
    import Lombok.AllArgsConstructor;
    import Lombok.Getter;
    import Lombok.NoArgsConstructor;
    import Lombok.Setter;
    import Lombok.ToString;
      
    @Getter
    @Setter
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString
    public class Employee {
        private Integer employeeId;
        private String name;
        private String company;
        private String emailId;
    }
    

    区别在代码中清晰可见。原始源代码包含约60行代码,而Lombok已将其缩减为仅约20行代码。它不仅减少了代码行,而且还提高了源代码的可读性和可维护性。

    如何将Lombok项目配置为日食?

    1. 从此官方链接下载Lombok jar文件。
    2. 双击下载的jar文件以执行它。 GUI将显示为特定的您要在其中插入IDE的IDE。
    3. 单击指定位置,然后选择IDE。
    4. 单击安装以完成安装,然后退出安装程序。
    5. 要验证正确的安装,请转至Eclipse IDE,选择“帮助”,然后选择有关Eclipse的信息。您将在此处看到项目Lombok。

    龙目岛注释:
    龙目岛提供了一组注释,使我们的编码工作更加轻松。让我们看看Lombok的一些最常用的注释。

    1. @Getter和@Setter:这些批注提供了字段的getter和setter方法。这些注释可以在级别,字段和类中使用。 @Getter注释会生成一个具有公共访问类型的getter方法,该方法将简单地返回该字段,并且如果字段名称为“ Name”,则其名称为getName()。 @Setter批注生成访问类型为public的setter方法,该方法返回void并采用单个参数将值分配给该字段。如果字段名称为“名称”,则默认设置器的名称为setName()。
      import Lombok.Getter;
      import Lombok.Setter;
        
      @Getter
      @Setter
      public class Employee {
          private Integer employeeId;
          private String name;
          private String company;
          private String emailId;
      }
      
    2. @NoArgsConstructor:此批注用于生成不带参数的构造函数。它的身体是空的,什么也没做。它通常与使用中的其他一些参数化构造函数结合使用。当您要通过在构造函数中不传递任何参数来生成类的对象时,则需要此方法。
      import Lombok.NoArgsConstructor;
        
      @NoArgsConstructor
      public class Employee {
          private Integer employeeId;
          private String name;
          private String company;
          private String emailId;
      }
      
    3. @AllArgsConstructor:此批注用于生成一个参数化的构造函数,该构造函数接受每个字段的单个参数并使用它初始化它们。如果要通过在构造函数中传递字段的初始值来生成类的对象,则需要使用该对象。
      import Lombok.AllArgsConstructor;
        
      @AllArgsConstructor
      public class Employee {
          private Integer employeeId;
          private String name;
          private String company;
          private String emailId;
      }
      
    4. @ToString:此批注用于覆盖toString()方法并为其生成默认实现。默认实现按顺序打印类名和字段,并用逗号分隔。您还可以通过使用@ ToString.Exclude注释一些不想打印的字段来跳过它们。
      import Lombok.ToString;
        
      @ToString
      public class Employee {
          private Integer employeeId;
          private String name;
          private String company;
          private String emailId;
      }
      
    5. @EqualsAndHashCode:此批注用于覆盖equals()和hashCode()方法,并为thu提供默认的实现。默认强制使用所有非静态字段,我们可以对其进行修改,并可以使用注释@ EqualsAndHashCode.Exclude排除某些文件
      import Lombok.EqualsAndHashCode;
        
      @EqualsAndHashCode
      public class Employee {
          private Integer employeeId;
          private String name;
          private String company;
          private String emailId;
      }
      
    6. @Data:此批注是一个快捷方式批注,并将@ToString@Getter@Setter@EqualsAndHashCode@RequiredArgsConstructor批注捆绑到一个批注中。该批注提供了Java模型类中所有常用的样板代码,例如所有字段的getter,所有非最终字段的setter,toString(),equals()和hashCode()的默认实现(使用所有字段)类的构造函数,并初始化该类的所有字段。
      import Lombok.Data;
        
      @Data
      public class Employee {
          private Integer employeeId;
          private String name;
          private String company;
          private String emailId;
      }
      

    参考:

    • https://www.baeldung.com/intro-to-project-Lombok
    • https://dzone.com/articles/project-Lombok-boilerplate-code-reducer
    • https://projectLombok.org/