在项目开发中,我们经常需要构建对象。常见的做法有getter/setter,或者构造器构建对象。

可能会有人写出类似如下的代码:

Company company=new Company();
company.setAgentId(agentId);
company.setAgentUserId(agentUserId);
company.setCompanyName( companyName );
company.setAgentUserName(agentUserName);
company.setDomain( domain );
company.setTaxNo( taxNo );
company.setCreateTime( new Date() );
company.setIsauth(1);
company.setActivationCode(activationCode);
company.setAuthCode(authCode);
company.setDomain(domain);
company.setUseType(1);
company.setContactor(phoneNumber);

也可能写了一个参数非常冗长,传参特别容易出错的构造方法。

Lombok注解

我们可以使用Lombok和建造者模式简化代码。

(注意,Lombok除了要加入依赖包,还需要配置一下。几分钟可以搞定,具体做法请百度。)

如果你的同事不喜欢用Lombok,或者你想了解一下Lombok注解所表示的代码块,你可以在安装插件后,通过选择IDEA导航栏的"Refactor"---"Delombok"将Lombok注解逆向生成代码。

首先,在Company类上方加入Lombok注解,如下所示:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor(staticName = "getCompany")
public class Company {
private Integer agentUserId;
@NonNull
private Integer agentId;
private String companyName;
private String agentUserName;
private String domain;
private String taxNo;
private Date createTime;
private Integer isAuth;
private String activationCode;
private String authCode;
private Integer userType;
private String phoneNumber;
}

其中的注释意思如下:

@Builder:可通过Builder模式构建对象。
@NonNull:变量不能为空
@Data:包含了getter、setter、toString、equals、hashcode方法。
@NoArgsConstructor : 生成一个无参数的构造方法。
@AllArgsContructor: 会生成一个包含所有变量的构造方法。
@RequiredArgsConstructor: 会生成一个包含常量,和标识了NotNull的变量 的构造方法。
@RequiredArgsConstructor(staticName = "getCompany"):生成的构造方法是private,外部可以使用static方法访问。

如果不理解,我们可以选择IDEA导航栏的"Refactor"---"Delombok"逆向生成代码。

只加注解@RequiredArgsConstructor表示的代码如下,由于只有变量agentId为@NonNull,所以构造方法只有这个变量:

    public Company(Integer agentId) {
this.agentId = agentId;
}

使用注解@RequiredArgsConstructor(staticName = "getCompany")表示的代码如下:

    private Company() {
} public static Company getCompany() {
return new Company();
}

Builder模式构建对象

加入了@Builder后,那么可以将代码改写成如下:

   Company company=Company.builder().agentId(1).agentUserId(1).companyName("google")
.agentUserName("lin").domain("test").taxNo("1111111").createTime(new Date())
.isAuth(1).activationCode("0587-1235").userType(1).phoneNumber("666666666")
.build();

基本形式就是: 类名.builder().build() ,在中间加入变量方法及变量的具体值。

通过这种方式构建对象,没有那么多的setter,参数也不容易出错。

参考资料:

http://kriszhang.com/lombok/

使用建造者模式和Lombok简化代码的更多相关文章

  1. 使用 lombok 简化代码

    使用前的准备 1.Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的.  <1>添加 ...

  2. 使用lombok 简化代码

    第一步:添加依赖 第二步:下载 lombok  jar 包 第三步 :打开cmd 命令行 执行命令, -javaagent:lombok.jar -Xbootclasspath/a:lombok.ja ...

  3. 设计模式-05建造者模式(Builder Pattern)

    1.模式动机 比如我们要组装一台电脑,都知道电脑是由 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘和鼠标组成,其中非常重要的一点就是这些硬件都是可以灵活选择,但是组装步骤都是大同小异(可以组一个 ...

  4. 我的强迫症系列之@Builder和建造者模式

    前言 备受争议的Lombok,有的人喜欢它让代码更整洁,有的人不喜欢它,巴拉巴拉一堆原因.在我看来Lombok唯一的缺点可能就是需要安装插件了,但是对于业务开发的项目来说,它的优点远远超过缺点. 我们 ...

  5. 设计模式实战系列之@Builder和建造者模式

    前言 备受争议的Lombok,有的人喜欢它让代码更整洁,有的人不喜欢它,巴拉巴拉一堆原因.在我看来Lombok唯一的缺点可能就是需要安装插件了,但是对于业务开发的项目来说,它的优点远远超过缺点. 我们 ...

  6. 建造者模式与原型模式/builder模式与prototype模式/创建型模式

    建造者模式 定义 用于简化复杂对象的创建 JDK中的建造者模式 java.lang.StringBuilder中的append()方法,每次调用后返回修改后的对象本身. public StringBu ...

  7. Idea使用Lombok简化实体类代码

    引入相应的maven包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...

  8. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

  9. Lombok简化Java代码

    导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...

随机推荐

  1. 【转载】PC端微信设置操作快捷键方法

    在电脑上使用微信的时候,有时候我们需要自定义PC版微信快捷键操作,支持自定义微信快捷键设置的有:发送消息快捷键.截屏快捷键.打开微信快捷键以及检测快捷键热键是否与其他软件设置冲突.并且自定义设置PC微 ...

  2. Sublime Text3的安装(package control error 或者 there are no package available for installation等问题)

    Sublime是一款非常好用的代码编辑器.Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,多种语言的插件,代码段等.还可自定义键绑定,菜单和工具栏.Sublime Text 的 ...

  3. 交换ESCHAUNGE英语ESCHAUNGE交易所

    exchange From Middle English eschaunge, borrowed from Anglo-Norman eschaunge exchange 1.An act of ex ...

  4. IDEA 阿里巴巴代码规范检查插件

    1.问题概要 大家都想写出规范的代码,可规范的标准是什么勒,估计每个人心中的标准都不是完全一致的 在分工合作越来越精细化的时代,我们需要一个最大程度接近公认的规范,这里我们以阿里巴巴的代码规范作为参考 ...

  5. Apache Thrift安装介绍 (ubuntu)

    apache thrift是一种常用的远程服务调用框架. 下面对apache thrift的安装进行介绍: 下面是thrift的源码安装: Debian/Ubuntu (14+) 编译运行依赖安装 $ ...

  6. SolarWinds-改变端口

    Solarwinds配置文件,修改为80端口(默认为8123) C:\Program Files\SolarWinds\DPA\iwc\tomcat\conf\server.xml

  7. golang读写文件

    1. 标准输入输出 os提供了标准输入输出文件: Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") Stdout = Ne ...

  8. 在vps中搭建ftp服务器

    1. 服务器配置 首先当然是更新源列表并安装 vsftpd. sudo apt-get update sudo apt-get install vsftpd 安装完成后我们需要对服务器进行进一步的配置 ...

  9. 在Windows下/Linux下安装jdk版本

    到官网https://www.oracle.com/technetwork/java/javase/downloads/index.html选择适合自己的版本, 目前我做测试和开发主要用的是jdk 8 ...

  10. 一道面试题关于js中逗号

    一.今天遇到一个面试题,自我感觉是会,但是却做错了.人都是这样,自我感觉良好,其实也就预警自己已经忽视一些细节以及一些自我感知. 面试题: ,j=,k; ,j<;i++,j++){ k=i+j; ...