lombok入门使用

lombo提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。用了一段时间,感觉还不错,写来记录一下,这里是官网地址

安装

jar包安装

maven可通过如下方式:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
    <scope>provided</scope>
</dependency>

插件安装

使用lombok还需要插件的配合,我使用开发工具为idea,所以这里只讲解idea的安装,使用eclipse和myeclipse的小伙伴和自行google安装方法。
首先打开idea的偏好设置,输入plugins,如下图:

图一

点击Browse repositories,弹出如下窗口,搜索lombok点击安装即可。
图二

使用

下面介绍一下常用的几个注解:

  • @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
  • @Getter 使用方法同上,区别在于生成的是getter方法。
  • @ToString 注解在类,添加toString方法。
  • @EqualsAndHashCode 注解在类,生成hashCode和equals方法。
  • @NoArgsConstructor 注解在类,生成无参的构造方法。
  • @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
  • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
  • @Data 注解在类,为类的所有字段注解@ToString、@EqualsAndHashCode、@Getter的便捷方法,同时为所有非final字段注解@Setter。

释例

下面是一个小例子,可以看下使用lombok和不使用的区别。

不使用lombok

public class Person {
    private Integer id;
    private String name;
    private Integer age;

    public Person() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

使用lombok

@Setter
@Getter
@ToString
@NoArgsConstructor
public class Person {
    private Integer id;
    private String name;
    private Integer age;
}

当然上面也可以用@Data来代替,是不是简洁很多,这还是在类字段很少的情况下,如果字段更多的时候效果更明显。

lombok 不会影响程序的运行性能,它使用 javac 的插件机制在编译阶段生成访问函数到 class 的字节码里,和我们直接写没有什么区别。

本文只是一个简单的介绍,官网有更多注解和更详细的解释,有兴趣的可以去了解一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。