lombok的使用

来源:互联网 发布:蛇精吐火的软件 编辑:程序博客网 时间:2024/06/06 14:20

lombok是一个通过简单注解的形式帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,简单的说我们现在构造一个类,里面的Java的get、set方法,还有构造方法什么的现在不需要我们手动写了,源码编译时自动生成(编译成字节码文件时)。

<dependencies>    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <version>1.16.10</version>    </dependency></dependencies>
Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

lombok使用

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。

@NonNull: 可以帮助我们避免空指针。

使用lombok:

import lombok.NonNull;    public class NonNullExample extends Something {        private String name;          public NonNullExample(@NonNull Person person) {        super("Hello");        this.name = person.getName();    }}

不使用lombok:

public class NonNullExample extends Something {    private String name;      public NonNullExample(@NonNull Person person) {        super("Hello");        if (person == null) {            throw new NullPointerException("person");        }        this.name = person.getName();    }}

@Cleanup: 自动帮我们调用close()方法。

使用lombok:

import lombok.Cleanup;import java.io.*;public class CleanupExample {    public static void main(String[] args) throws IOException {        @Cleanup InputStream in = new FileInputStream(args[0]);        @Cleanup OutputStream out = new FileOutputStream(args[1]);        byte[] b = new byte[10000];        while (true) {            int r = in.read(b);            if (r == -1) break;            out.write(b, 0, r);        }    }}

不使用lombok:

import java.io.*;    public class CleanupExample {        public static void main(String[] args) throws IOException {            InputStream in = new FileInputStream(args[0]);            try {                OutputStream out = new FileOutputStream(args[1]);                try {                    byte[] b = new byte[10000];                    while (true) {                    int r = in.read(b);                    if (r == -1) break;                    out.write(b, 0, r);                    }                } finally {                    if (out != null) {                        out.close();                    }                }            } finally {                if (in != null) {                in.close();            }        }    }}

@Getter / @Setter: 自动生成Getter/Setter方法

使用lombok:

    import lombok.AccessLevel;    import lombok.Getter;    import lombok.Setter;    public class GetterSetterExample {        @Getter @Setter private int age = 10;        @Setter(AccessLevel.PROTECTED) private String name;    }

不使用lombok:

public class GetterSetterExample {    private int age = 10;    private String name;    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    protected void setName(String name) {        this.name = name;    }}

@NoArgsConstructor: 自动生成无参数构造函数。

@AllArgsConstructor: 自动生成全参数构造函数。

@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!

还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。

官方文档https://projectlombok.org/features/index.html


原创粉丝点击