lombok使用
Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。
它所有的增强都是通过注解实现,所以了解其使用主要了解一下注解即可。更全的注解文章见 lombok的使用详解
一、maven配置
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> </dependency>
二、@Data
@Data 强悍的组合功能包
相当于注解集合。效果等同于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor。
import lombok.Builder; import lombok.Data; import lombok.experimental.Tolerate; @Data public class Student { private String name; private int age; @Tolerate public Student() {} }
public Class Demo { @Test public void testLombok() { Student student = new Student(); student.setName("stu"); logger.info(student.toString()); } }
三、@Builder
lombok中的@Builder支持构造者模式。@Builder
提供了一种比较推崇的构建值对象的方式,非常推荐的一种构建值对象的方式。缺点就是父类的属性不能产于builder。
@Builder public class Demo { private final int finalVal = 10; private String name; private int age; } public static void main(String[] args) { Demo demo = Demo.builder().name("aa").age(10).build(); System.out.println(demo); }
使用@Builder后,就没有了无参构造函数。若需要,可以自己写构造函数。比如
@Builder public class Demo { private final int finalVal = 10; private String name; private int age; public Demo() {} public Demo(String name, int age) { this.name = name; this.age = age; } }
或者使用@NoArgsConstructor 和 @AllArgsConstructor
@Data @NoArgsConstructor @AllArgsConstructor @Builder
public class Demo {
private final int finalVal = 10; private String name; private int age; }
或者可以使用@Tolerate
注解
@Builder public class Demo { private final int finalVal = 10; private String name; private int age; @Tolerate public Demo() {} }