lombok是一款在java开发中简洁化代码十分有用的插件工具,这篇博客对较为常用的几种注解进行记录,分享学习心得。
使用lombok注解,目的和作用就在于不用再去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。
首先,用到的几个注解:

  • @Data
    使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去;
  • @AllArgsConstructor
    使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数;
  • @NoArgsConstructor
    使用后创建一个无参构造函数;
  • @Builder
    关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数。

然后,通过一个简单的代码例子说明:
1)首先,建立一个简单的类,并用lombok进行注解:注意这是注解前的代码,可以与后面贴出的注解生成的代码进行比较

@Data //生成getter,setter等函数
@AllArgsConstructor //生成全参数构造函数
@NoArgsConstructor//生成无参构造函数
@Builder
public class test1 {String name;String age;String sex;
}

2)测试入口:

 public static void main(String[] args) {//使用@Builder注解后,可以直接通过Builder设置字段参数test1 t1=new test1.test1Builder().name("wang").age("12").sex("man").build();System.out.println("name is"+t1.getName()+'\n'+"age is :"+t1.getAge());}

3)通过查看编译后的类,比较注解前后的代码量,发现会省去了很多代码的书写:

public class test1 {String name;String age;String sex;public static test1.test1Builder builder() {return new test1.test1Builder();}public String getName() {return this.name;}public String getAge() {return this.age;}public String getSex() {return this.sex;}public void setName(String name) {this.name = name;}public void setAge(String age) {this.age = age;}public void setSex(String sex) {this.sex = sex;}public boolean equals(Object o) {if (o == this) {return true;} else if (!(o instanceof test1)) {return false;} else {test1 other = (test1)o;if (!other.canEqual(this)) {return false;} else {label47: {Object this$name = this.getName();Object other$name = other.getName();if (this$name == null) {if (other$name == null) {break label47;}} else if (this$name.equals(other$name)) {break label47;}return false;}Object this$age = this.getAge();Object other$age = other.getAge();if (this$age == null) {if (other$age != null) {return false;}} else if (!this$age.equals(other$age)) {return false;}Object this$sex = this.getSex();Object other$sex = other.getSex();if (this$sex == null) {if (other$sex != null) {return false;}} else if (!this$sex.equals(other$sex)) {return false;}return true;}}}protected boolean canEqual(Object other) {return other instanceof test1;}public int hashCode() {int PRIME = true;int result = 1;Object $name = this.getName();int result = result * 59 + ($name == null ? 43 : $name.hashCode());Object $age = this.getAge();result = result * 59 + ($age == null ? 43 : $age.hashCode());Object $sex = this.getSex();result = result * 59 + ($sex == null ? 43 : $sex.hashCode());return result;}public String toString() {return "test1(name=" + this.getName() + ", age=" + this.getAge() + ", sex=" + this.getSex() + ")";}@ConstructorProperties({"name", "age", "sex"})public test1(String name, String age, String sex) {this.name = name;this.age = age;this.sex = sex;}public test1() {}public static class test1Builder {private String name;private String age;private String sex;test1Builder() {}public test1.test1Builder name(String name) {this.name = name;return this;}public test1.test1Builder age(String age) {this.age = age;return this;}public test1.test1Builder sex(String sex) {this.sex = sex;return this;}public test1 build() {return new test1(this.name, this.age, this.sex);}public String toString() {return "test1.test1Builder(name=" + this.name + ", age=" + this.age + ", sex=" + this.sex + ")";}}
}

总结:lombok注解使用起来会很方便,可以多去了解不同注解的作用。
另贴一些相关的博客:
lombok 安装使用及一些注解功能:
https://blog.csdn.net/motui/article/details/79012846
java Builder:
http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html
https://www.cnblogs.com/begin1949/p/4930896.html

lombok几个基本注解的使用@Data @AllArgsConstructor @NoArgsConstructor @Builder相关推荐

  1. 注解@AllArgsConstructor @NoArgsConstructor是 什么意思

    //@Data 生成getter,setter ,toString等函数 //@NoArgsConstructor 生成无参构造函数 //@AllArgsConstructor //生成全参数构造函数 ...

  2. lombok有参构造注解_Java高效开发工具: Lombok

    Lombok, 一个Java开发必备效率工具,可以大大避免编写一些常用方法(get/set, hashcode等),简化开发.虽然现在IDE很多都可以通过快捷键生成POJO的一些方法了,但是如果该PO ...

  3. import lombok 报错_Lombok注解@Getter @Setter详解

    1.为什么强大 ​项目中经常使用bean,entity等类,绝大部分数据类类中都需要get.set.toString.equals和hashCode方法,尽管IDE工具都会帮我们生成.但自动生成这些代 ...

  4. lombok几个基本注解的使用及遇到的坑点

    安装lombok插件:https://blog.csdn.net/YXWik/article/details/109379610 常用注解 @Data 注解在类上:提供类所有属性的 getting 和 ...

  5. 【日志记录】基于AOP实现自定义日志注解,并支持动态设置注解内容

    前言 平时在java项目开发过程中,涉及到记录操作日志的场景很多,有时候大家习惯把操作日志的生成代码写到业务代码中,这样造成了日志和业务代码的耦合性比较高.可维护性也不强,易读性更差,更多的时候是使用 ...

  6. Spring各种注解 @PersistenceContext和@Resource @GetMapping、@PostMapping、@PutMapping、@DeleteMapping

    这里记录各种spring注解 @Data@AllArgsConstructor@NoArgsConstructor@Builder @Data 使用这个注解,就不用再去手写Getter,Setter, ...

  7. Lombok - 消除冗长的 java 代码

    引入地址:http://www.blogjava.net/fancydeepin/archive/2012/07/12/lombok.html 前言: 到了新公司,在代码中发现了lombok.觉得还可 ...

  8. java builder父类,解决Lombok父类与子类Builder不兼容

    Lombok 是我们经常使用的插件,@Builder也是我们经常使用的注解,那你有没有遇见过如下错误呢? 父类与子类 Builder不兼容场景 Error:(16, 1) java: com.jdcl ...

  9. Spring Boot整合Spring Data JPA操作数据

    一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...

最新文章

  1. 看完让你理解WebSocket原理
  2. AcWing 116. 飞行员兄弟(二维指数型枚举)
  3. SQL Server 版本变更检查
  4. ARCore-普及篇
  5. 【原】豆瓣电台桌面版——Win7任务栏支持+托盘+快捷键+历史记录
  6. html5 input step,HTML5 Data Input 元素介绍
  7. 饥荒联机版服务器控制台本地和在线,服务器,控制台饥荒服务器控制台命令,指令,常用命令,管理命令 - Welcome to XiongTianQi.CN...
  8. 软件测试中的“保险项目”讲解
  9. java判断内网ip_Java判断IP地址为内网IP还是公网IP的方法
  10. 神经网络从产生到现在的发展历史--科普
  11. Web安全-Tomcat禁用Web服务器内置不安全请求方法
  12. android下的XMPP对应smack-4.2.1,实现登录,注册,发单聊,加聊天室,发群聊等简单功能
  13. DOTA~杀人声音,英雄台词
  14. 搜搜/soso、有道、搜狗/sogou、雅虎/Yahoo、url 参数分析
  15. More than 4094 XFs (styles)
  16. 6.5 自定义报表方案
  17. 狗看了都流泪的Mask-RCNN
  18. IJCAI论文 | 基于改进注意力循环控制门,品牌个性化排序升级系统来了
  19. centos8之U盘安装操作系统
  20. pycharm无法消除出现的错误提示的可能解决方案

热门文章

  1. silverlight体验之三:简单控件堆成个Login
  2. java获取当月1号 的时间chuo_java获取时间戳的方法
  3. acrobat xi pro 简体中文语言支持包_出图利器佳能PRO-541S绘图仪现货报价-佳能 PRO-541S_西安大幅面打印机行情...
  4. php导出excel2007实例,PHP导出EXCEL的简单范例 使用phpexcel类库导出excel
  5. myisam为什么比innodb查询快_mysql存储引擎之MyISAM 和 InnoDB的比较
  6. 奶粉中的php是什么,婴儿配方奶粉的分类及用途
  7. java中clone方法_Java Object clone()方法– Java中的克隆
  8. r语言中删除向量的某些元素_R中的向量
  9. sql数据库自动增量备份_SQL自动增量
  10. Python字符串index()