您的位置:首页 > 其它

lombok 介绍及基本使用方法

2017-07-27 11:29 501 查看

Lombok是一个基于LGPL的开源J2EE综合开发环境的Eclipse插件,对编码,发布,测试,以及debug等各个软件开发的生命周期提供支持,支持JSP,EJB等。Lomboz是Eclipse的一个J2EE的插件,它将很多Java应用服务器、J2EE组件和Web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立、测试、部署J2EE应用。

lombok 的官方网址:http://projectlombok.org/ 

lombok 安装
    使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。先在官网下载最新版本的 JAR 包,现在是 0.11.2 版本,我用的是 0.11.0

    第一次使用的时候我下载的是最新版本的,也就是我现在用的 0.11.0,到现在已经更新了两个版本,更新的好快啊 ... ...

1. 双击下载下来的 JAR 包安装lombok
    我选择这种方式安装的时候提示没有发现任何 IDE,所以我没安装成功,我是手动安装的。如果你想以这种方式安装,请参考官网的视频。

2.eclipse / myeclipse 手动安装 lombok
    1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下

    2. 打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:

        -Xbootclasspath/a:lombok.jar

        -javaagent:lombok.jar

    3.重启 eclipse / myeclipse

常用的 lombok 注解

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

@Setter:注解在属性上;为属性提供 setting 方法

@Getter:注解在属性上;为属性提供 getting 方法

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

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

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

@Cleanup:关闭流 @Synchronized:对象同步 @SneakyThrows:抛出异常

@Data

不使用 lombok 的方案

public class Person {

private String id;
private String name;
private String identity;
private Logger log = Logger.getLogger(Person.class);
public Person() {
}
public Person(String id, String name, String identity) {
this.id = id;
this.name = name;
this.identity = identity;
}
public String getId() {
return id;
}
public String getName() {
return name;
}

public String getIdentity() {
return identity;
}
public void setId(String id) {
this.id = id;
}

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

public void setIdentity(String identity) {
this.identity = identity;
}
}

使用 lombok 的方案

@Data
@Log4j
@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String id;
private String name;
private String identity;
}


上面的两个
Java 类,从作用上来看,它们的效果是一样的,相比较之下,很明显,使用 lombok 要简洁许多
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

@Builder

不使用 lombok 的方案

public class Example<T> {
private T foo;
private final String bar;

private Example(T foo, String bar) {
this.foo = foo;
this.bar = bar;
}

public static <T> ExampleBuilder<T> builder() {
return new ExampleBuilder<T>();
}

public static class ExampleBuilder<T> {
private T foo;
private String bar;

private ExampleBuilder() {}

public ExampleBuilder foo(T foo) {
this.foo = foo;
return this;
}

public ExampleBuilder bar(String bar) {
this.bar = bar;
return this;
}

@java.lang.Override
public String toString() {
return "ExampleBuilder(foo = " + foo + ", bar = " + bar + ")";
}

public Example build() {
return new Example(foo, bar);
}
}
}

使用 lombok 的方案

@Builder
public class Example {
private int foo;
private final String bar;
}


构造一个实例,属性不需要单独set

Example.builder().foo(1).bar(“test”).build()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: