20190905 Lombok常用注解
Lombok常用注解
val
用于声明类型,将从初始化表达式推断出类型,仅适用于局部变量和foreach循环,而不适用于字段。声明的局部变量为final
变量。
Java自带类型推断随着JDK版本提升越来越好用,这个注解用处不大。
val j = 2;
val map = new HashMap<Integer, String>();
for (val entry : map.entrySet()) {
}
var
var
完全一样val
,除了局部变量没有标记为final
。
可以再次赋值,但是不能赋予不同类型。
用处不大。
@NonNull
使用@NonNull
方法或构造函数的参数让lombok为您生成null-check语句。
注解类字段时,生成的Setter方法和构造器中会执行非空检查。
@Setter
@NonNull
private String name;public void test1(@NonNull String s1, String s2) {System.out.println(s1 + s2);}
@Cleanup
用于局部变量,使用@Cleanup
以确保在代码执行路径退出当前作用域之前自动清除给定资源。
默认情况下,清除方法被假定为close()
。可以指定其他无参方法。
调用清理方法的顺序是声明顺序的倒序。
更推荐使用try-with-resource
语法。
public class CleanupExample {public static void main(String[] args) throws IOException {@Cleanup CleanupExample cleanupExample1 = new CleanupExample();@Cleanup("other") CleanupExample cleanupExample2 = new CleanupExample();@Cleanup InputStream is = new FileInputStream("abc");}public static void close() {System.out.println("close...");}public static void other() {System.out.println("other...");}
}
@Getter和@Setter
用于类和类字段上,让lombok自动生成默认的 getter / setter。
可以在类上放置@Getter
和/或@Setter
注释。在这种情况下,就像使用注释注释该类中的所有非静态字段一样。对于静态字段,只生成Getter方法。
@Getter(lazy=true)
为 private final
字段生成线程安全的懒加载方法。
@ToString
可以使用@ToString
生成toString()方法的实现来注释任何类定义。默认情况下,它会按顺序打印类名称以及每个字段,并以逗号分隔。
可以通过@ToString
的一些属性控制类中的字段是否打印。
@EqualsAndHashCode
从对象的字段生成hashCode
和equals
实现。
可以通过@EqualsAndHashCode
的一些属性进行控制。
@NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor
@NoArgsConstructor
:无参构造函数
@RequiredArgsConstructor
: 未初始化的final
字段,标记为@NonNull
且未初始化的字段
@AllArgsConstructor
:参数为类中的所有字段
@Data
@ToString
, @EqualsAndHashCode
, @Getter
(所有非static字段), @Setter
(非final和static字段),@RequiredArgsConstructor
Value
用于类上。
@Data
的不可变形式。
@Builder
为类生成Builder模式的API。
@Builder.Default
在单字段上设置默认值
@Builder.Default private final long created = System.currentTimeMillis();
@Singular
@Singular
只能应用于lombok已知的集合类型。
lombok将该字段视为集合,并生成2个“加法器”方法而不是Setter方法。
@SneakyThrows
@SneakyThrows
可以用来偷偷抛出已检查的异常而不在方法的throws子句中实际声明这一点。
可以抛出非RuntimeException
及其子类,而不用在方法上声明。
@SneakyThrows
public static void testSneakyThrows() {throw new Throwable();
}
@Synchronized
用于方法上。
@Synchronized
是synchronized
修饰符的更安全的变体。
@Log
@CommonsLog
org.apache.commons.logging.Log
@Flogger
com.google.common.flogger.FluentLogger
@JBossLog
org.jboss.logging.Logger
@Log
java.util.logging.Logger
@Log4j
org.apache.log4j.Logger
@Log4j2
org.apache.logging.log4j.Logger
@Slf4j
org.slf4j.Logger
@XSlf4j
org.slf4j.ext.XLogger
参考资料
- Lombok官网
- Lombok features
- REDUCING BOILERPLATE CODE WITH PROJECT LOMBOK
转载于:https://www.cnblogs.com/huangwenjie/p/11469222.html
20190905 Lombok常用注解相关推荐
- springboot依赖lombok插件、lombok常用注解
--springboot依赖lombok插件.lombok常用注解 1 lombok插件 1.1 lombok插件简介 官方介绍如下: 意思是:lombok是一个能自动插入到编辑器和构建工具的java ...
- lombok常用注解整理
转载自 https://blog.csdn.net/u011308294/article/details/78627560 简介 lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得 ...
- lombok常用注解使用说明
POM添加依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok&l ...
- lombok常用注解大全
lombok可以帮助我们提升日常开发的效率jar包.里面有许多实用的注解. 本文将对lombok的常用注解作使用介绍,对于一些实验性官方不推荐的注解只会简单介绍 实验性注解可能会带来一些风险. 注: ...
- lombok常用注解
引入pom中依赖: <dependency><groupId>org.projectlombok</groupId><artifactId>lombok ...
- Lombok常用注解和功能
转载自 https://blog.csdn.net/qq_40081976/article/details/79139565 注解 val:用在局部变量前面,相当于将变量声明为final @NonNu ...
- Lombok工具 : 常用注解介绍 (全)
文章目录 介绍 引入Maven依赖 常用的注解 @NoArgsConstructor/@AllArgsConstructor @RequiredArgsConstructor @Getter/@Set ...
- [MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略
常用注解 @TableName 设置实体类所对应的表名 如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗? 我们可以通过配置文件来解决这个问题: @TableId ...
- Lombok的注解简单介绍
Lombok的注解简单介绍 背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...
最新文章
- NandFlash详述【转】
- Android实例-录音与回放(播放MP3)(XE8+小米2)
- 学习MongoDB(Troubleshoot Replica Sets) 集群排除故障
- SAP CRM WebClient UI,如何快速定位到抛出错误消息的那一行代码
- linux系统与命令
- Microsoft Deployment Toolkit 2008部署操作系统系列(一)
- Quick Switch Virtual Desktop[AutoHotkey]
- 对开源库 limdu 命令注入漏洞 (CVE-2020-4066) 的简要分析
- 转载:认识自我,把握机遇 —— 谢恩伟 (二)
- 相同源代码的html文件在本地和服务器端被浏览器请求时,显示的效果不一样!!!...
- day14 匿名函数
- 大数据案例之OD线分析
- 伪标签Pseudo Label
- Don't Starve,好脚本,好欢乐
- 会说话的汤姆猫纪念徽章藏品上线,集齐赢实物盲盒!
- 轻松又酷炫地实现弹幕效果——手把手教学
- Java.lang.Class类 isArray()方法有什么功能呢?
- 计算机d盘hlddz是啥,tempest_qqgametempestj是会么文件,可以删除么
- 安卓RatingBar的使用(评分控件)
- a+++a和a+a++的区别
热门文章
- python第一个公开发行版_python之基础篇(一)
- css3 flex布局九宫格,css3最全flex布局结构整理
- linux监听报错sp2-0734,Linux中Oracle启动侦听报错TNS:permission denied的解决方法
- android获取当前activity view,Android中如何通过View获取Activity
- 【汇编语言】指令寻址
- clickhouse条件函数
- kafka中的数据发送保障
- linux下通过伪造udp包来实现指定网卡发送数据
- MySQL 获取物理表的主键字段
- 什么是真正的程序员:A Little Printf Story