您的位置:首页 > 其它

Lombok介绍及使用方法

2018-03-04 00:36 375 查看
一、Lombok是什么?

lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。

lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。

虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。

lombok的官方地址:https://projectlombok.org/

lombok的Github地址:https://github.com/rzwitserloot/lombok

二、Lombok安装

lombok的安装跟一般引用jar包没有什么区别,可以到官网上下载最新的jar包,然后导入到项目里面就好啦。

Maven添加依赖

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>


Intellij idea开发的话需要安装Lombok plugin,windows版Idea设置: Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

Mac版Idea设置:Preferences->Plugins->Browse Repositiories ->搜索Lombok ->安装Lombok Plugins



三、Lombok使用

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

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

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


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

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);
}
}
}


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

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


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

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

@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!此外还提供了equals、canEqual、hashCode、toString 方法

@Data
@NoArgsConstructor
@AllArgsConstructor
public class CentralKitchenMapVO {

private CentralKitchenNodeVo currentKitchen;

private List<CentralKitchenNodeVo> otherKitchenNodes;
}


5、@Builder:构造一个实例,属性不需要单独set

类使用了@Builder:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CommoditySaleVolumeVO {

private Integer categoryId;

private String categoryName;

private BigDecimal totalSoldQuantity;

private BigDecimal totalSoldMoney;

private BigDecimal averagePrice;

private String saleMeasureUnit;

private String moneyMeasureUnit;

private List<CommoditySaleDetailVO> saleDetails;

}


通过类名.builder().build()构造类的实例,并设置属性:

CommoditySaleVolumeVO saleVolumeVO = CommoditySaleVolumeVO.builder()
.categoryId(commodityId)
.categoryName("猕猴桃")
.totalSoldQuantity(totalSoldQuantity)
.totalSoldMoney(totalSoldMoney)
.averagePrice(averagePrice)
.saleMeasureUnit("kg")
.moneyMeasureUnit("元")
.saleDetails(saleDetailVOList).build();


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

参考原文:

1、http://www.cnblogs.com/holten/p/5729226.html

2、http://blog.csdn.net/mccand1234/article/details/53456411

3、官方文档:https://projectlombok.org/features/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lombok lombok的使用