万和城网站,黄石网站建设,手机平面设计软件,永久免费网站系统lombok 生成代码对Java编程语言最常提出的批评之一是它需要大量的样板代码 。 对于简单的类尤其如此#xff0c;该类只需要存储一些值就可以。 您需要这些值的getter和setter方法#xff0c;也许您还需要一个构造函数#xff0c;覆盖equals#xff08;#xff09;和 hash… lombok 生成代码 对Java编程语言最常提出的批评之一是它需要大量的样板代码 。 对于简单的类尤其如此该类只需要存储一些值就可以。 您需要这些值的getter和setter方法也许您还需要一个构造函数覆盖equals和 hashcode通常是必需的也许您想要一个更有用的toString实现。 最后您可能有100行代码可以用10行Scala或Groovy代码重写。 诸如Eclipse或IntelliJ的Java IDE试图通过提供各种类型的代码生成功能来减少此问题。 但是即使不必自己编写代码如果在IDE中打开这样的文件也总是会看到它并被它分散注意力。 Lombok项目 不要被丑陋的网页所吓倒是一个小的Java库可以帮助减少Java应用程序中的样板代码量。 Lombok项目提供了一组注释这些注释在开发时会进行处理以将代码注入Java应用程序。 注入的代码可立即在您的开发环境中使用。 让我们看一下下面的Eclipse屏幕截图 定义的类使用Lombok的Data注释进行注释并且最多包含三个私有字段。 Data自动注入gettersetter用于非final字段equalshashCodetoString和用于初始化final dateBirth字段的构造函数。 如您所见生成的方法可直接在Eclipse中使用并显示在Outline视图中。 建立 要为您的应用程序设置Lombok必须将lombok.jar放入类路径。 如果您使用的是Maven则只需将以下依赖项添加到pom.xml中 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.14.6/versionscopeprovided/scope
/dependency 您还需要在使用的IDE中设置Lombok NetBeans用户只需在其项目属性中启用“在编辑器中启用注释处理”选项即可请参阅 NetBeans说明 。 Eclipse用户可以通过双击lombok.jar并遵循快速安装向导来安装Lombok。 对于IntelliJ可以使用Lombok插件 。 入门 简介中显示的Data注释实际上是其他各种Lombok注释的快捷方式。 有时Data做得太多。 在这种情况下您可以使用更具体的Lombok注释从而为您提供更大的灵活性。 使用Getter和Setter可以仅生成getter和setter Getter
Setter
public class Person {private final LocalDate birthday;private String firstName;private String lastName;public Person(LocalDate birthday) {this.birthday birthday;}
} 请注意布尔字段的getter方法以is代替get的前缀例如isFoo代替getFoo。 如果只想为特定字段生成getter和setter则可以注释这些字段而不是类。 生成equalshashCode和toString EqualsAndHashCode
ToString
public class Person {...
} EqualsAndHashCode和ToString也具有各种可用于自定义其行为的属性 EqualsAndHashCode(exclude {firstName})
ToString(callSuper true, of {firstName, lastName})
public class Person {...
} 在此equals和hashCode不会考虑firstName字段。 toString将首先调用super.toString并且仅考虑firstName和lastName。 对于生成构造函数可以使用多个注释 NoArgsConstructor生成不带参数的构造函数默认构造函数。 RequiredArgsConstructor为所有未初始化的最终字段生成一个带有一个参数的构造函数。 AllArgsConstructor为类中的所有字段生成一个带有一个参数的构造函数。 Data批注实际上是 ToString EqualsAndHashCode Getter Setter和RequiredArgsConstructor的常用快捷方式。 如果您喜欢不可变的类则可以使用Value代替Data Value
public class Person {LocalDate birthday;String firstName;String lastName;
} Value是 ToString EqualsAndHashCode AllArgsConstructor FieldDefaultsmakeFinal truelevel AccessLevel.PRIVATE和Getter的快捷方式。 因此使用Value可以获取toStringequalshashCodegetter和具有每个字段一个参数的构造函数。 默认情况下它也将所有字段设置为私有和最终因此您不必添加私有或最终修饰符。 看Lombok的实验功能 除了到目前为止显示的受支持的注释之外Lombok还具有一些实验功能可以在“ 实验功能”页面上找到它们。 我特别喜欢的这些功能之一是Builder批注它提供了Builder模式的实现。 Builder
public class Person {private final LocalDate birthday;private String firstName;private String lastName;
} Builder生成一个静态builder方法该方法返回一个生成器实例。 此构建器实例可用于构建带有Builder注释的类的对象此处为Person Person p Person.builder().birthday(LocalDate.of(1980, 10, 5)).firstName(John).lastName(Smith).build(); 顺便说一句如果您想知道LocalDate类是什么就应该看看我有关Java 8日期和时间API的博客文章 结论 Lombok计划基于注释注入生成的方法例如getter和setter。 它提供了一种简便的方法可以大大减少Java应用程序中的样板代码。 请注意这样做有一个弊端根据reddit评论 包括项目作者的评论Lombok必须依靠各种黑客手段才能完成工作。 因此未来的JDK或IDE版本可能会破坏Lombok项目的功能。 另一方面这些评论是5年前发表的而Lombok计划仍在积极维护。 您可以在GitHub上找到Project Lombok的源代码。 翻译自: https://www.javacodegeeks.com/2014/09/reduce-boilerplate-code-in-your-java-applications-with-project-lombok.htmllombok 生成代码