代码精简工具lombok
Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get、set以及构造方法等的Java库
一、安装Lombok
步骤一 项目引入lombok插件
1 - 非maven依赖托管项目再lib文件夹中添加lombok.jar包
2 - maven项目直接在项目pom.xml文件夹添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>
步骤二 在Intellij idea或者Eclipse集成lombok插件让他们可以识别lombok
Intellij idea
方式一、进入plugins->Browse repositories->输入Lombok搜索插件,点击install下载,这种方式目前尝试过,下载失败
方式二、进入github,搜索lombok for Intellij插件选择Intellij idea对应版本的插件下载zip包,把解压后的文件放到Intellij idea安装目录的插件库即plugins文件夹下
二、使用教程
1 - @Data注解作用于类中,相当于同时加入@Getter@Setter@ToString @EqualsAndHashCode
@Data
public class UserInfoDTO implements Serializable{
/**用户编号**/
private Long uid;
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
2 - @Getter@Setter 可在类和成员变量上使用,注解作用于属性上用于自动生成get、set方法
public class UserInfoDTO implements Serializable{
/**用户编号**/
@Getter
private Long uid;
@Setter
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
3 - @NonNull该注解用于判断是否为空,如果调用set方法设置为空则抛出java.lang.NullPointerException
public class UserInfoDTO implements Serializable{
/**用户编号**/
@Getter
private Long uid;
@Setter@NonNull
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
4 - @Synchronized该注解作用与方法自动添加同步机制,生成的源码显示生成的方法并不直接锁方法而是锁该方法下的代码块,锁是对象锁
5 -@ToString注解主要是作用于ToString方法,里面可以设置多个属性
callSuper 是否输出父类的toString方法
includeFieldNames 是否包含字段名称,默认为true
exclude排除生成的toString字段
@Getter
@Setter
@ToString(callSuper = false, includeFieldNames = true, exclude = "uid")
public class UserInfoDTO implements Serializable{
/**用户编号**/
private Long uid;
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
lombok生成的等价源码
public class UserInfoDTO implements Serializable {
private Long uid;
private String uname;
private Integer age;
public UserInfoDTO() {
}
public Long getUid() {
return this.uid;
}
public String getUname() {
return this.uname;
}
public Integer getAge() {
return this.age;
}
public void setUid(Long uid) {
this.uid = uid;
}
public void setUname(String uname) {
this.uname = uname;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "UserInfoDTO(uname=" + this.getUname() + ", age=" + this.getAge() + ")";
}
}
@Cleanup该注解用于确保已分配的资源被释放,例如IO连接的关闭
public static void testCleanUp(){
try{
@Cleanup FileOutputStream bos = new FileOutputStream("test.txt");
bos.write(new byte[]{'A','B','C'});
}catch(IOException ex){
}
}
lombok生成的等价源码
public static void testCleanUp() {
try {
FileOutputStream bos = new FileOutputStream("test.txt");
try {
bos.write(new byte[]{65, 66, 67});
} finally {
if(Collections.singletonList(bos).get(0) != null) {
bos.close();
}
}
} catch (IOException var5) {
;
}
}
看不懂为什么要先把文件输出流对象放到一个单例集合里面再去获取它进行判空
代码精简工具lombok的更多相关文章
- 代码精简之Lombok
JavaWeb项目开发中,JavaBean总是不可避免的出现,随之而来的就是大量的getter.setter方法,虽然大部分的开发工具(比如Eclipse等)都支持自动生成这些东西,但是一旦Bean里 ...
- Java 代码精简
Java 代码精简 利用语法 利用三元表达式 普通 String title; if (isMember(phone)) { title = "会员"; } else { titl ...
- 基于IDEA工具 lombok 的使用
一.简介 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 二.lombok的添加和常用注解 ...
- Python实现C代码统计工具(三)
目录 Python实现C代码统计工具(三) 声明 一. 性能分析 1.1 分析单条语句 1.2 分析代码片段 1.3 分析整个模块 二. 制作exe Python实现C代码统计工具(三) 标签: Py ...
- JavaBean的实用工具Lombok(省去get、set等方法)
转:https://blog.csdn.net/ghsau/article/details/52334762 背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性 ...
- C++ 代码静态分析工具cppcheck【转】
转自:http://blog.csdn.net/chen19870707/article/details/42393217 权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] c ...
- Java效率工具Lombok使用与原理
Java效率工具Lombok使用与原理 我个人觉得 Lombok是一个优化Java代码以及提升开发效率不错的工具.Lombok 的Github地址为:https://github.com/rzwits ...
- 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重要
摘要 12款为用户精心打造的Idea插件,含盖前后端,另把使用小技巧分享给大家,提高大家的码率,希望对你们有帮助! Lombok Lombok为Java项目提供了非常有趣的附加功能,使用它的注解可以有 ...
- Android代码分析工具lint学习
1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...
随机推荐
- Mysql 数据库日志与数据文件分开
参考:https://blog.csdn.net/jiao_fuyou/article/details/78366621 myql默认配置情况下,二进制日志文件是保存在默认的数据目录 data 下,如 ...
- RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍W ...
- css实现垂直水平居中的方法(个数不限)?
方法一:使用绝对定位 大家都知道margin:0 auto;能够实现水平居中,但却不知道margin:0 auto;也是可以实现垂直居中的: 给居中元素添加如下样式: .Absolute-Center ...
- 关于PHP的mkdir函数
问题:dedecms5.7 php5.6 我想项目根目录下的uploads文件夹下动态创建一个文件夹/uploads/imgs $path = '/uploads/imgs'; mkdir($path ...
- XV Open Cup named after E.V. Pankratiev. GP of Central Europe (AMPPZ-2014)--J.Cave
给你一棵树,现在有m个专家,每个专家计划从$a_i$走到$b_i$, 经过的距离不超过$d_i$,现在让你找一个点,使得所有专家的路途都能经过这个点 令$S_i$表示满足第i个专家的所有点,先检查1可 ...
- idea 本地tomcat启动控制台乱码问题
问题:本地tomcat启动,控制台出现中文乱码: 解决办法: 安装了idea发现启动tomcat的时候控制台会有乱码问题,在tomcat配置中添加在VM options填写-Dfile.encodin ...
- element-ui <el-radio> 回显格式为中文 传值格式为数值
<template> <!-- 需求:使用 <el-radio> 关于性别单选 前端显示中文,传值为Number --> <div class="d ...
- Ubuntu18.04下给PyCharm创建快捷方式
Ubuntu18.04下给PyCharm创建快捷方式 该方法 WebStorm.PyCharm.Clion 等都适用. 步骤 终端输入: sudo gedit /usr/share/applicati ...
- lumion物体系统,导入模型6.3
选择物体后可以改变它的颜色 “导入”“导入新模型.”su中模型分正面反面.在lumion中显示是不一样的.正面是可以显示出来的,反面就是透明的,lumion只能识别不同的材质,所以在su中要用不同的颜 ...
- Qt 分页标题打印
void ItemSplitter::printpdf(const QString& fileName){ QPrinter printer_html(QPrinter::ScreenReso ...