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

参考资料

20190905 Lombok常用注解的更多相关文章

  1. Lombok 常用注解

    Lombok Lombok 能以简单的注解形式来简化 java 代码,提高开发人员的开发效率.例如开发中经常需要写的 javaBean,都需要花时间去添加相应的 getter/setter,也许还要去 ...

  2. lombok常用注解@Data@AllArgsConstructor@NoArgsConstructor@Builder@Accessors

    原贴:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992 https://blog.csdn.net/weixin_382293 ...

  3. lombok常用注解

    简介: Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率.例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器.equ ...

  4. 第三方工具系列--Lombok常用注解

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html Lombok注解解析: @NonNull 使用在方法的参数或者构造 ...

  5. [Java 开发利器Lombok] 常用注解演示

    在以往的对象模型编码时,我们需要写一大堆的get/set以及不同的构造函数等.Lombok为我们提供了一个非常好的插件形式. 在大多数的项目中,只需要使用到以下集中Annotation就足够了,如果需 ...

  6. Lombok 常用注解总结

    本文转载自知乎专栏 极乐科技.有所整理. 主要注解 @Data @Setter @Getter @Log4j @AllArgsConstructor @NoArgsConstructor @Equal ...

  7. lombok --- 常用注解解析

    @Data@Getter @Setter @ToString@Cleanup@NonNull@Builder@EqualsAndHashCode      

  8. Lombok - 使用注解让你的JavaBean变得更加简洁

    Lombok - 工具简介: Lombok是一个编译时注释预处理器,有助于在编译时注入一些代码.Lombok提供了一组在开发时处理的注释,以将代码注入到Java应用程序中,注入的代码在开发环境中立即可 ...

  9. Eclipse安装lombok及常用注解

    转自:https://blog.csdn.net/ZJDWHD/article/details/77795023 lombok的官方网址:http://projectlombok.org/ https ...

随机推荐

  1. python中字典的美化输出

    一.背景 如果一个字典长度很大,直接print输出则比较难看,我们需要美化输出,可以借鉴json import json beautiful_format = json.dumps(your_dict ...

  2. STM32F407 正点原子按键输入实验

    库函数版本: 库函数 源文件 头文件 GPIO_Init(GPIOE, &GPIOE_initstructure) stm32f4xx_gpio.c stm32f4xx_gpio.h RCC_ ...

  3. GUI学习之二十七——布局管理学习总结

    今天讲一个大的内容——布局管理. 一.布局管理的诞生背景 在前面所讲的所有案例中,我们都是用采用手动布局的方式来布局的.结合个案例来说明一下:在一个界面上放三个label,三个label纵向排列 fr ...

  4. 2--面试总结-深入理解js线程进阶-宏任务微任务

    前言:Event Loop即时间循环,是指浏览器或Node的一种解决javascript单线程运行时不会阻塞的一种机制,也就是我们经常使用异步的原理 Js运行机制      1.不同运行环境,js运行 ...

  5. linux 时区问题

    1.java项目发现 服务器时间不正确,修改了服务器时间之后依然没解决. 2.java虚拟机的时区也需要设置:

  6. 如何提高SMTP邮件的安全性?从而不被黑客窃听

    简单邮件传输协议(SMTP)用于在邮件服务器之间进行邮件传输,并且传统上是不安全的,因此容易被黑客窃听.命名实体的基于DNS的认证(国家统计局)用于SMTP提供了邮件传输更安全的方法,并逐渐变得越来越 ...

  7. python如何调用c编译好可执行程序

    python如何调用c编译好可执行程序       以下总结出几种在Python 中调用 C/C++ 代码的方法 ------------------------------------------- ...

  8. 【LuoguP3270】[JLOI2016] 成绩比较

    题目链接 题目描述 G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M-1的整数.一位同学在必修课上可以获得的分数是1到Ui中的一个整数. ...

  9. 【ELK】elasticsearch设置密码访问

    1.需要在配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启. xpack.security.enabled: true x ...

  10. R语言预测实战(第二章--预测方法论)

    2.1预测流程 从确定预测主题开始,一次进行数据收集.选择方法.分析规律.建立模型.评估效果直到发布模型. 2.2.1确定主题 (1)指标:表达的是数量特征,预测的结果也通常是通过指标的取值来体现. ...