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

从对象的字段生成hashCodeequals实现。

可以通过@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

用于方法上。

@Synchronizedsynchronized修饰符的更安全的变体。

@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常用注解相关推荐

  1. springboot依赖lombok插件、lombok常用注解

    --springboot依赖lombok插件.lombok常用注解 1 lombok插件 1.1 lombok插件简介 官方介绍如下: 意思是:lombok是一个能自动插入到编辑器和构建工具的java ...

  2. lombok常用注解整理

    转载自 https://blog.csdn.net/u011308294/article/details/78627560 简介 lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得 ...

  3. lombok常用注解使用说明

    POM添加依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok&l ...

  4. lombok常用注解大全

    lombok可以帮助我们提升日常开发的效率jar包.里面有许多实用的注解. 本文将对lombok的常用注解作使用介绍,对于一些实验性官方不推荐的注解只会简单介绍 实验性注解可能会带来一些风险. 注: ...

  5. lombok常用注解

    引入pom中依赖: <dependency><groupId>org.projectlombok</groupId><artifactId>lombok ...

  6. Lombok常用注解和功能

    转载自 https://blog.csdn.net/qq_40081976/article/details/79139565 注解 val:用在局部变量前面,相当于将变量声明为final @NonNu ...

  7. Lombok工具 : 常用注解介绍 (全)

    文章目录 介绍 引入Maven依赖 常用的注解 @NoArgsConstructor/@AllArgsConstructor @RequiredArgsConstructor @Getter/@Set ...

  8. [MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略

    常用注解 @TableName 设置实体类所对应的表名 如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗? 我们可以通过配置文件来解决这个问题: @TableId ...

  9. Lombok的注解简单介绍

    Lombok的注解简单介绍 背景   我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...

最新文章

  1. NandFlash详述【转】
  2. Android实例-录音与回放(播放MP3)(XE8+小米2)
  3. 学习MongoDB(Troubleshoot Replica Sets) 集群排除故障
  4. SAP CRM WebClient UI,如何快速定位到抛出错误消息的那一行代码
  5. linux系统与命令
  6. Microsoft Deployment Toolkit 2008部署操作系统系列(一)
  7. Quick Switch Virtual Desktop[AutoHotkey]
  8. 对开源库 limdu 命令注入漏洞 (CVE-2020-4066) 的简要分析
  9. 转载:认识自我,把握机遇 —— 谢恩伟 (二)
  10. 相同源代码的html文件在本地和服务器端被浏览器请求时,显示的效果不一样!!!...
  11. day14 匿名函数
  12. 大数据案例之OD线分析
  13. 伪标签Pseudo Label
  14. Don't Starve,好脚本,好欢乐
  15. 会说话的汤姆猫纪念徽章藏品上线,集齐赢实物盲盒!
  16. 轻松又酷炫地实现弹幕效果——手把手教学
  17. Java.lang.Class类 isArray()方法有什么功能呢?
  18. 计算机d盘hlddz是啥,tempest_qqgametempestj是会么文件,可以删除么
  19. 安卓RatingBar的使用(评分控件)
  20. a+++a和a+a++的区别

热门文章

  1. python第一个公开发行版_python之基础篇(一)
  2. css3 flex布局九宫格,css3最全flex布局结构整理
  3. linux监听报错sp2-0734,Linux中Oracle启动侦听报错TNS:permission denied的解决方法
  4. android获取当前activity view,Android中如何通过View获取Activity
  5. 【汇编语言】指令寻址
  6. clickhouse条件函数
  7. kafka中的数据发送保障
  8. linux下通过伪造udp包来实现指定网卡发送数据
  9. MySQL 获取物理表的主键字段
  10. 什么是真正的程序员:A Little Printf Story