龙目岛有什么需要?
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项目配置为日食?
- 从此官方链接下载Lombok jar文件。
- 双击下载的jar文件以执行它。 GUI将显示为特定的您要在其中插入IDE的IDE。
- 单击指定位置,然后选择IDE。
- 单击安装以完成安装,然后退出安装程序。
- 要验证正确的安装,请转至Eclipse IDE,选择“帮助”,然后选择有关Eclipse的信息。您将在此处看到项目Lombok。
龙目岛注释:
龙目岛提供了一组注释,使我们的编码工作更加轻松。让我们看看Lombok的一些最常用的注释。- @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; }
- @NoArgsConstructor:此批注用于生成不带参数的构造函数。它的身体是空的,什么也没做。它通常与使用中的其他一些参数化构造函数结合使用。当您要通过在构造函数中不传递任何参数来生成类的对象时,则需要此方法。
import Lombok.NoArgsConstructor; @NoArgsConstructor public class Employee { private Integer employeeId; private String name; private String company; private String emailId; }
- @AllArgsConstructor:此批注用于生成一个参数化的构造函数,该构造函数接受每个字段的单个参数并使用它初始化它们。如果要通过在构造函数中传递字段的初始值来生成类的对象,则需要使用该对象。
import Lombok.AllArgsConstructor; @AllArgsConstructor public class Employee { private Integer employeeId; private String name; private String company; private String emailId; }
- @ToString:此批注用于覆盖toString()方法并为其生成默认实现。默认实现按顺序打印类名和字段,并用逗号分隔。您还可以通过使用@ ToString.Exclude注释一些不想打印的字段来跳过它们。
import Lombok.ToString; @ToString public class Employee { private Integer employeeId; private String name; private String company; private String emailId; }
- @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; }
- @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/
- 使用Lombok: Java模型类,具有四个私有字段以及使用Lombok批注的其getter,setter,无args构造函数,参数化构造和toString方法。