欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

eclipse集成lombok,以及lombok注解的使用

程序员文章站 2022-06-17 10:27:05
...

一。lombok简介

    Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法。

二。安装lombok

    1.首先下载Lombok.jar包,下载地址:http://projectlombok.org/download.html

    2.下到本地后双击运行Lombok.jar,数秒后将弹出一框,以确认eclipse的安装路径 ,如图:

        eclipse集成lombok,以及lombok注解的使用

    注意如果eclipse没有安装到默认目录,那么需要点击Specify location..选择eclipse.exe所在的路径,然后点击Install/update即可完成安装。

    3.关闭重启eclipse (IDE 使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。)

    4.项目里pom文件直接加入依赖
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
        </dependency>

三。lombok一些注释的使用方法:

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

1.@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();
    }
}

2.@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();
            }
        }
    }
}

3.@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;
    }
}

四。全部的注解和讲解

@Data : 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法。

@Getter/@Setter : 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。

@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象。

@Slf4j : 注解在类上;为类提供一个 属性名为log 的 log4j 日志对象。

@NoArgsConstructor : 注解在类上;为类提供一个无参的构造方法。

@AllArgsConstructor : 注解在类上;为类提供一个全参的构造方法。

@NonNull : 注解在属性上,用来校验参数非空,可以帮助我们避免空指针。

@ToString : 注解在类上,重写toString方法。

此外还有注解:val,var,@EqualsAndHashCode,@RequiredArgsConstructor,@Cleanup,@Value,@Builder,@SneakyThrows,@Synchronized,experimental。

详细的学习地址请看官网:https://projectlombok.org/features/all