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
参考资料
20190905 Lombok常用注解的更多相关文章
- Lombok 常用注解
Lombok Lombok 能以简单的注解形式来简化 java 代码,提高开发人员的开发效率.例如开发中经常需要写的 javaBean,都需要花时间去添加相应的 getter/setter,也许还要去 ...
- lombok常用注解@Data@AllArgsConstructor@NoArgsConstructor@Builder@Accessors
原贴:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992 https://blog.csdn.net/weixin_382293 ...
- lombok常用注解
简介: Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率.例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器.equ ...
- 第三方工具系列--Lombok常用注解
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html Lombok注解解析: @NonNull 使用在方法的参数或者构造 ...
- [Java 开发利器Lombok] 常用注解演示
在以往的对象模型编码时,我们需要写一大堆的get/set以及不同的构造函数等.Lombok为我们提供了一个非常好的插件形式. 在大多数的项目中,只需要使用到以下集中Annotation就足够了,如果需 ...
- Lombok 常用注解总结
本文转载自知乎专栏 极乐科技.有所整理. 主要注解 @Data @Setter @Getter @Log4j @AllArgsConstructor @NoArgsConstructor @Equal ...
- lombok --- 常用注解解析
@Data@Getter @Setter @ToString@Cleanup@NonNull@Builder@EqualsAndHashCode
- Lombok - 使用注解让你的JavaBean变得更加简洁
Lombok - 工具简介: Lombok是一个编译时注释预处理器,有助于在编译时注入一些代码.Lombok提供了一组在开发时处理的注释,以将代码注入到Java应用程序中,注入的代码在开发环境中立即可 ...
- Eclipse安装lombok及常用注解
转自:https://blog.csdn.net/ZJDWHD/article/details/77795023 lombok的官方网址:http://projectlombok.org/ https ...
随机推荐
- 使用Python发送企业微信消息
准备工作: 到企业微信官网,注册一个企业:登录企业微信后台,创建一个“自建”应用, 获取企业ID.agentid.secret这3个必要的参数:在企业微信的通讯录中,创建多个测试账号:在手机端安装“企 ...
- GUI学习之二十五——QFontDialog学习总结
今天学习字体对话框——QFontDialog()控件. QFontDialog()是继承自QDialog()的一个子类,用来选择给定的字体(包括字体.字号.样式等) 一.构造函数 QFontDialo ...
- PHP file函数
一.判断函数 is_file($filename) //判断是否文件 is_link($filename) //判断是否为链接符号 is_dir($filename) //判断是否为路径 is_rea ...
- 【CF838E】 Convex Countour
[CF838E] Convex Countour 首先观察题目的性质 由于是凸包,因此不自交路径中的一条边\((x, y)\)的两端点只能向与\(x\)或\(y\)相邻的结点连边. 举个栗子,若选取了 ...
- 在浏览器下载pdf,或者txt文档是会直接打开
window.location.href = url会直接打开,解释大概是因为浏览器自身可以解析.pdf或者txt.解决方法如下: 本来就要用a标签里面加上download属性的,结果发现不行,就算了 ...
- 链接收藏:bullet物理引擎不完全指南
这个也是博客园的文章,编辑得也很好,就不copy了,结尾还有PDF: https://www.cnblogs.com/skyofbitbit/p/4128347.html 完结
- CSS插入的四种方式
一.什么是CSS CSS(Cascading style sheets 层叠样式表),CSS可以用以为网页构建样式表,通过样式表来达到对网页进行美化的效果.所谓层叠可以将网页想象成一层层的结构,高层 ...
- Java使用google身份验证器实现动态口令验证
参考: 1)https://www.jb51.net/article/121243.htm 2)https://www.cnblogs.com/wuaili/p/9810661.html
- BZOJ 2097: [Usaco2010 Dec]Exercise 奶牛健美操 二分 + 贪心 + 树上问题
Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in",& ...
- Behaviour Tree Service 中的几个函数
Service中可以override的函数有8个,因为每个函数都有个AI版本的,所以实际上是4组函数,AI版本的和非AI版本基本一样, 他们分别是: Receive Search Start (AI) ...