lombok使用基础教程
- 本文作者:@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.
Getter
声明创建getter方法;Setter
声明创建setter方法;@Setter(AccessLevel.PROTECTED)
可以添加参数,指定权限为私有;- Attention!关于
boolean
的set前缀都是set,但getter不同,小写的boolean
,即基本类型,前缀是is
;Boolean
,即包装类型,前缀是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使用基础教程相关推荐
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...
- Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应
在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...
- Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | didispace.com/ ...
- Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流
点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 最近管点闲事浪费了不少时间,感谢网友们的留言提醒. 及时纠正路线,继续跟大家一起学习Spring Cl ...
- Linux启动nacos成功日志_Spring Cloud Alibaba基础教程:使用Nacos作为配置中心
通过本教程的前两篇: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方 ...
- Spring Cloud Alibaba基础教程:使用Nacos作为配置中心
通过本教程的前两篇: <Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现> <Spring Cloud Alibaba基础教程:支持的几种服务消费方 ...
- [SQL基础教程] 1-5 表的删除和更新
[SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...
- python 包用法_Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...
- Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...
最新文章
- [原创]Android Monkey 在线日志分析工具开发
- Java - 网络编程(NetWork)
- 人类基因组最后一块拼图完成!Science罕见6篇连发
- Java模块化之路 —— OSGI介绍
- LINUX安装ORACLE 9204 报错解决!!
- openai-gpt_为什么到处都看到GPT-3?
- 1+X web中级 Laravel学习笔记——blade模版
- 自动翻转html,css--图片翻转二:自动翻转
- java 内存溢出和内存泄漏_java中的内存溢出和内存泄漏
- Redhat6.5中搭建Postfix邮件系统
- hive map 转string_Hive之SELECT语句的实用技巧 (一) | 每日五分钟学大数据
- NATAPP使用教程(内网穿透)
- Git 学习日记-01
- T---EXCEL表格换行
- H3C iMC 存在远程命令执行漏洞
- Github一夜爆火的阿里术小册究竟有什么魅力?才能引大家趋之若鹜
- java 源代码 分析_Java Collections 源码分析
- 揭秘《超能陆战队》诞生记
- 破解android 九宫格锁
- 爬取热榜2k图片,爬虫入门即可
热门文章
- VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti
- python 易支付sdk
- OpenCV 图像的加法
- 北风设计模式课程---深入理解[代理模式]原理与技术
- python学习笔记--easy_install和pip
- Genymotion的使用 -- A Faster Android Emulator
- 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
- 我用ASP.NET缓存之OutputCache
- 天啊!我的xbox360突然不读盘了。。。
- mac系统下git、mysql、nginx、php的环境搭建