• 本文作者:@Ryan Miao
  • 本文链接:https://www.cnblogs.com/woshimrf/p/lombok-usage.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!

目录

前言
引入
在maven中
在gradle中
IntelIJ IDEA 插件
基本用法
Geeter Setter
ToString
@EqualsAndHashCode
构造函数@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
必用项@Data
不可变对象valueobject @Value
最喜欢的项 @Builder
总结
参考

前言

lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码。在很多工具类的项目中都有这个功能。比如dagger。

通俗的说,lombok可以通过注解来标示生成getter settter等代码。我们自然可以通过编译器比如IDEA的Generate生成,为啥要用这个?

在项目开发阶段,一个class的属性是一直变化的,今天可能增加一个字段,明天可能删除一个字段。每次变化都需要修改对应的模板代码。另外,有的class的字段超级多,多到一眼看不完。如果加上模板代码,更难一眼看出来。更有甚者,由于字段太多,想要使用builder来创建。手动创建builder和字段和原来的类夹杂在一起,看起来真的难受。lombok的@Builder即可解决这个问题。

引入

引入就是加入lombok的jar包。

在maven中

直接加入依赖

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

在gradle中

这里比较麻烦,需要添加一个编译时生成代码的插件。gradle里有几个这样的插件。但为了简化过程,lombok提供了新插件。

来源:官网, github

首先,添加一个plugin

plugins {id 'io.franzbecker.gradle-lombok' version '1.11'
}

然后,就可以了。还可以配置lombok的版本:

lombok { // optional: values below are the defaultsversion = "1.16.20"sha256 = ""
}

IntelIJ IDEA 插件

在IDEA里使用需要添加一个插件。在插件里搜索lombok,安装,重启。

IDEA里需要在设置中启用annotation processors。

基本用法

测试代码: https://github.com/Ryan-Miao/someTest/tree/master/src/main/java/com/test/lombok

Geeter Setter

最简单的,最常用的,最直观的使用就是getter setter方法。

package com.test.lombok;import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import java.util.Date; /**  * Created by Ryan Miao on 1/18/18.  */ public class GetterSetterExample { /**  * Age of the person. Water is wet.  *  * @param age New value for this person's age. Sky is blue.  * @return The current value of this person's age. Circles are round.  */ @Getter @Setter private int age = 10; @Getter @Setter private boolean active; @Getter @Setter private Boolean none; @Getter @Setter private Date date; /**  * Name of the person.  * -- SETTER --  * Changes the name of this person.  *  * @param name The new value.  */ @Setter(AccessLevel.PROTECTED) private String name; @Override public String toString() { return String.format("%s (age: %d)", name, age); } public static void main(String[] args) { GetterSetterExample example = new GetterSetterExample(); example.setActive(true); example.setAge(123); example.setDate(new Date()); example.setName("abc"); example.setNone(false); Date date = example.getDate(); Boolean none = example.getNone(); boolean active = example.isActive(); } }

简单使用没有问题,深入一点可以看到有些特殊设定。比如javadoc.

  1. Getter声明创建getter方法;
  2. Setter声明创建setter方法;
  3. @Setter(AccessLevel.PROTECTED)可以添加参数,指定权限为私有;
  4. Attention!关于boolean的set前缀都是set,但getter不同,小写的boolean,即基本类型,前缀是isBoolean,即包装类型,前缀是get

编译后的结果如下:

//
// Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.test.lombok; import java.util.Date; public class GetterSetterExample { private int age = 10; private boolean active; private Boolean none; private Date date; private String name; public GetterSetterExample() { } public String toString() { return String.format("%s (age: %d)", this.name, this.age); } public static void main(String[] args) { GetterSetterExample example = new GetterSetterExample(); example.setActive(true); example.setAge(123); example.setDate(new Date()); example.setName("abc"); example.setNone(false); Date date = example.getDate(); Boolean none = example.getNone(); boolean active = example.isActive(); } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public boolean isActive() { return this.active; } public void setActive(boolean active) { this.active = active; } public Boolean getNone() { return this.none; } public void setNone(Boolean none) { this.none = none; } public Date getDate() { return this.date; } public void 

转载于:https://www.cnblogs.com/itrena/p/8352863.html

lombok使用基础教程相关推荐

  1. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  2. Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  3. Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | didispace.com/ ...

  4. Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 最近管点闲事浪费了不少时间,感谢网友们的留言提醒. 及时纠正路线,继续跟大家一起学习Spring Cl ...

  5. Linux启动nacos成功日志_Spring Cloud Alibaba基础教程:使用Nacos作为配置中心

    通过本教程的前两篇: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方 ...

  6. Spring Cloud Alibaba基础教程:使用Nacos作为配置中心

    通过本教程的前两篇: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方 ...

  7. [SQL基础教程] 1-5 表的删除和更新

    [SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...

  8. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  9. Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0

    Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...

最新文章

  1. [原创]Android Monkey 在线日志分析工具开发
  2. Java - 网络编程(NetWork)
  3. 人类基因组最后一块拼图完成!Science罕见6篇连发
  4. Java模块化之路 —— OSGI介绍
  5. LINUX安装ORACLE 9204 报错解决!!
  6. openai-gpt_为什么到处都看到GPT-3?
  7. 1+X web中级 Laravel学习笔记——blade模版
  8. 自动翻转html,css--图片翻转二:自动翻转
  9. java 内存溢出和内存泄漏_java中的内存溢出和内存泄漏
  10. Redhat6.5中搭建Postfix邮件系统
  11. hive map 转string_Hive之SELECT语句的实用技巧 (一) | 每日五分钟学大数据
  12. NATAPP使用教程(内网穿透)
  13. Git 学习日记-01
  14. T---EXCEL表格换行
  15. H3C iMC 存在远程命令执行漏洞
  16. Github一夜爆火的阿里术小册究竟有什么魅力?才能引大家趋之若鹜
  17. java 源代码 分析_Java Collections 源码分析
  18. 揭秘《超能陆战队》诞生记
  19. 破解android 九宫格锁
  20. 爬取热榜2k图片,爬虫入门即可

热门文章

  1. VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti
  2. python 易支付sdk
  3. OpenCV 图像的加法
  4. 北风设计模式课程---深入理解[代理模式]原理与技术
  5. python学习笔记--easy_install和pip
  6. Genymotion的使用 -- A Faster Android Emulator
  7. 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
  8. 我用ASP.NET缓存之OutputCache
  9. 天啊!我的xbox360突然不读盘了。。。
  10. mac系统下git、mysql、nginx、php的环境搭建