以前项目中写model时,都需要添加get、set、toString、hashCode方法,虽然idea有快捷键可以快速生成这些代码,但是代码会变得很冗长。通过使用lombok插件的注解可以消除冗余的代码。get、set、toString、hashCode这些方法可以通过@data注解表示。如果不想使用@data注解,对于get方法可以使用@Setter注解,对于set方法,可以使用@Getter注解,对于toString方法使用@ToString注解。具体更多注解:https://projectlombok.org/features/
这些注解必须通过和@build一起使用,@build注解的作用:可以自动生成所需要的代码,使我们写的类可以通过代码实例化
举个例子:
首先使用lomboc插件除了需要在idea中下载相应的插件,还需要添加相应的依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
lomboc即是插件又是jar包,编译加载相应时生成相应的方法
model:User.java
@Builder
@Data
public class User {
private String userName;
private String password;
}
直接@data简单粗暴
测试类:Test.java
public class Test {
public static void main(String[] args) {
User user = new User("a", "b");
System.out.println(user);
System.out.println("password: " + user.getPassword());
}
}
运行结果:
User(userName=a, password=b)
name: b
已经被正确实例化了,并且从结果中看出,其对toString方法也进行了重写
但是目前为止,我并不是特别喜欢用这个插件,用起来很不舒服
看我idea中的测试类:
又是红色波浪线,又是红色标记,真是相当恶心,虽然不影响运行结果。
第二天发现是因为自己装了插件没有重启idea,导致插件没有使用上
而且这种创建对象的用法并不好。应该使用builder进行创建
//1.调用builder方法生成一个builder对象
//2.调用userName\password方法初始化值并返回一个builder对象
//3.调用build方法生成一个不可变的User对象
User u = User.builder().userName("dayday").password("123").build();
总结:lombok是一款可以精减java代码、提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码