Lombok


Lombok

介绍

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。

使用

  1. 在开发工具中安装lombok插件
  2. 在项目中引入lombok.jar包
  3. 使用lombok注解(生成特定的代码)

注解

@Data

作用在类上,是以下注解的集合:@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor

@Data
@AllArgsConstructor
public class Student {
    
    private Integer id;
    
    private String name;
    
    private Integer age;
    
    private String schoolName ;
}

构造方法

  1. @NoArgsConstructor:生成无参数构造方法
  2. @AllArgsConstructor:生成全参数的构造方法
  3. @RequiredArgsConstructor:生成包含final和@NonNull注解成员变量的构造方法
//@NoArgsConstructor
@AllArgsConstructor
//生成包含final和@NonNull注解成员变量的构造方法
@RequiredArgsConstructor
public class Student {
    @NonNull
    private Integer id;
    
    private String name;
    
    private Integer age;
    
    private final String schoolName ;
}

@NonNull

  • 这个注解可以用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常,举个例子来看看:
//成员方法参数加上@NonNull注解
public String getName(@NonNull Person p){
    return p.getName();
}

实际效果相当于:

public String getName(@NonNull Person p){
    if(p==null){
        throw new NullPointerException("person");
    }
    return p.getName();
}
  • 用在成员变量上面,可以在生成Setter方法和构造方法的时候,检查对应形参是否为空

    @Data
    public class User {
        @NonNull
        private Integer id;
        private String name;
        private Integer age;
    }
    

@Getter/@Setter

  • 作用在类上,生成所有成员变量的getter/setter方法

  • 作用在成员变量上,生成该成员变量的getter/setter方法

  • 可以设定访问权限

@Setter
@Getter(value = AccessLevel.PROTECTED)
public class Student {
    private Integer id;
    
    private String name;
    
    private Integer age;	
}

@ToString

作用在类上,覆盖默认的toString()方法,可以通过 of 属性限定显示某些字段,通过 exclude 属性排除某些字段

@ToString(exclude = {"age"},of = {"id","name"})
public class Student {
    private Integer id;
    
    private String name;
    
    private Integer age;	
}

@EqualsAndHashCode

作用在类上,覆盖默认的equals和hashCode方法,可以通过 of 属性限定比较某些字段,通过 exclude 属性排除某些字段

@EqualsAndHashCode(of = {"id"})
public class Student {
    private Integer id;
    
    private String name;
    
    private Integer age;	
}

Lombok实现原理

自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”(插件化注解处理API)规范,只要程序实现了该API,就能在javac运行的时候得到调用。

Lombok就是一个实现了”JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:


  1. javac对源代码进行分析,生成一棵抽象语法树(AST)

  2. javac编译过程中调用实现了JSR 269的Lombok程序

  3. 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树 (AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点

  4. javac使用修改后的抽象语法树(AST)生成字节码文件

Eclipse安装Lombok插件

1、下载lombok.jar,lombok.jar官方下载地址:https://projectlombok.org/download

2、双击下载好的lombak.jar,安装步骤如下:

2-1.关闭弹出的警告窗口,点击 Specify location..

2-2.选择eclipse的安装目录(确保该路径中不能有中文)

2-3.点击Install / Update

2-4.点击Quit Installer,完成安装

3、安装完成之后,请确认eclipse安装路径下是否多了一个lombok.jar包,并且其
配置文件eclipse.ini中是否 添加了如下内容:-javaagent:D:\build-env\eclipse\lombok.jar

4、重启eclipse或myeclipse

5、测试,建立如下类:

import lombok.Data;

@Data
public class DataObject {
private String id;
private String name;
private String userId;
private String password;
}
备注:如过安装成功但是@Data等注解无效,可能是由于你的eclipse版本是新版本,你的lombok.jar版本太旧。那么请下载最新的lombok.jar再进行安装。

6、lombok注解介绍请参看:http://blog.csdn.net/sunsfan/article/details/53542374


文章作者: FFFfrance
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 FFFfrance !