lombok常见注解
一、使用lombok简化代码
lombok提供了很多注解,在编译时候生成java代码,代替了手工编写一些简单的代码,使程序员可以关注更重要的实现。
二、常用注解
以model为例
public class DataDemo {
private Integer id;
private String name;
private Date time;
}
一下是添加不同lombok注解的编译结果示例,编译结果很简单,不需要做什么说明,直接上代码:
@Getter / @Setter
public class GetterSetterDemo {
private Integer id;
private String name;
private Date time;
public GetterSetterDemo() { }
public Integer getId() { return this.id; }
public String getName() { return this.name; }
public Date getTime() { return this.time; }
public void setId(Integer id) { this.id = id; }
public void setName(String name) { this.name = name; }
public void setTime(Date time) { this.time = time; }
}
@ToString
model上添加注解:@ToString(exclude = {"id"}, includeFieldNames = false)
public class ToStringDemo {
private Integer id;
private String name;
private Date time;
public ToStringDemo() { }
public String toString() {
return "ToStringDemo(" + this.name + ", " + this.time + ")";
}
}
@Data
@Data 注解相当于 Getter + Setter + ToString + @RequiredArgsConstrutor,可以用在pojo上
public class DataDemo {
private Integer id;
private String name;
private Date time;
public DataDemo() { }
public Integer getId() { return this.id;}
public String getName() { return this.name; }
public Date getTime() { return this.time; }
public void setId(Integer id) { this.id = id; }
public void setName(String name) { this.name = name; }
public void setTime(Date time) { this.time = time; }
public boolean equals(Object o) { ... }
protected boolean canEqual(Object other) { ... }
public int hashCode() { ... }
public String toString() {
return "DataDemo(id=" + this.getId() + ", name=" + this.getName() + ", time=" + this.getTime() + ")";
}
}
@Builder
public class BuilderDemo {
private Integer id;
private String name;
private Date time;
@ConstructorProperties({"id", "name", "time"})
BuilderDemo(Integer id, String name, Date time) {
this.id = id;
this.name = name;
this.time = time;
}
public static BuilderDemo.BuilderDemoBuilder builder() {
return new BuilderDemo.BuilderDemoBuilder();
}
public static class BuilderDemoBuilder {
private Integer id;
private String name;
private Date time;
BuilderDemoBuilder() {
}
public BuilderDemo.BuilderDemoBuilder id(Integer id) {
this.id = id;
return this;
}
public BuilderDemo.BuilderDemoBuilder name(String name) {
this.name = name;
return this;
}
public BuilderDemo.BuilderDemoBuilder time(Date time) {
this.time = time;
return this;
}
public BuilderDemo build() {
return new BuilderDemo(this.id, this.name, this.time);
}
public String toString() {
return "BuilderDemo.BuilderDemoBuilder(id=" + this.id + ", name=" + this.name + ", time=" + this.time + ")";
}
}
}
构造函数
@AllArgsConstructor 全部参数构造函数
@NoArgsConstructor 无参数构造函数
@RequiredArgsConstructor NoNull参数和常量构造函数
/**@AllArgsConstructor*/
public class AllArgsConstructorDemo {
private Integer id;
private String name;
private Date time; @ConstructorProperties({"id", "name", "time"})
public AllArgsConstructorDemo(Integer id, String name, Date time) {
this.id = id;
this.name = name;
this.time = time;
}
} /**@NoArgsConstructor*/
public class NoArgsConstructorDemo {
private Integer id;
private String name;
private Date time; public NoArgsConstructorDemo() { }
} /**@RequiredArgsConstructor(staticName = "of")*/
public class RequiredArgsConstructorDemo {
private Integer id;
private String name;
private Date time; private RequiredArgsConstructorDemo() { } public static RequiredArgsConstructorDemo of() {
return new RequiredArgsConstructorDemo();
}
} /**@RequiredArgsConstructor(staticName = "of")*/
public class RequiredArgsConstructorDemo {
private Integer id;
@NonNull
private String name;
@NonNull
private Date time; @ConstructorProperties({"name", "time"})
private RequiredArgsConstructorDemo(@NonNull String name, @NonNull Date time) {
if(name == null) {
throw new NullPointerException("name");
} else if(time == null) {
throw new NullPointerException("time");
} else {
this.name = name;
this.time = time;
}
} public static RequiredArgsConstructorDemo of(@NonNull String name, @NonNull Date time) {
return new RequiredArgsConstructorDemo(name, time);
}
}
@Value
public final class ValueDemo {
private final Integer id;
private final String name;
private final Date time;
@ConstructorProperties({"id", "name", "time"})
public ValueDemo(Integer id, String name, Date time) {
this.id = id;
this.name = name;
this.time = time;
}
public Integer getId() {
return this.id;
}
public String getName() {
return this.name;
}
public Date getTime() {
return this.time;
}
public boolean equals(Object o) { ... }
public int hashCode() { ... }
public String toString() {
return "ValueDemo(id=" + this.getId() + ", name=" + this.getName() + ", time=" + this.getTime() + ")";
}
}
lombok常见注解的更多相关文章
- 小记----------lombok插件idea的安装&常见注解解释及小案例
Lombok安装插件 软件:idea 2018.3.6版本 1.打开settings
- eclipse 按装lombok与注解说明
原文:http://www.cnblogs.com/ywqbj/p/5711691.html 一.安装lombok 1.下载 lombok-1.16.16.jar 包 我的下载完后放到:/root ...
- 来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题)
今天看代码,发现idea报错,仔细一看调用的get,set方法bean中都没有,但是运行起来却没有问题,这个让我很疑惑.后来发现在类上有一个以前没见过的注解@Data,大概就是因为有他的原因.这个注解 ...
- lombok常用注解@Data@AllArgsConstructor@NoArgsConstructor@Builder@Accessors
原贴:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992 https://blog.csdn.net/weixin_382293 ...
- Lombok - 使用注解让你的JavaBean变得更加简洁
Lombok - 工具简介: Lombok是一个编译时注释预处理器,有助于在编译时注入一些代码.Lombok提供了一组在开发时处理的注释,以将代码注入到Java应用程序中,注入的代码在开发环境中立即可 ...
- 20190905 Lombok常用注解
Lombok常用注解 val 用于声明类型,将从初始化表达式推断出类型,仅适用于局部变量和foreach循环,而不适用于字段.声明的局部变量为final变量. Java自带类型推断随着JDK版本提升越 ...
- Lombok 使用介绍(常见注解)
目录 @Data @NonNull @Getter & @Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredAr ...
- Eclipse - 安装lombok后注解无效
安装 lombok lombok 的安装过程挺简单的,网上已经有很多相关的博客,这里就不在多说了,可以参考这篇:eclipse集成lombok注解不起作用 但是我按照网上的方式安装之后,注解一直不起作 ...
- lombok @EqualsAndHashCode 注解讲解
官方文档:@EqualsAndHashCode 原文中提到的大致有以下几点: 1. 此注解会生成equals(Object other) 和 hashCode()方法. 2. 它默认使用非静态,非瞬态 ...
随机推荐
- SecureCRT 详细使用图文教程(按步骤)
一.安装和激活 安装 1.在http://www./softs/55471.html下载相关包激活工具,运行scrt622-x86.exe. 2.进入安装向导程序,默认下一步,直到安装完成既可以. 破 ...
- win10下安装Oracle 11g 32位客户端遇到INS-13001环境不满足最低要求
在以管理员身份运行setup.exe之后,出现了:[INS-13001]环境不满足最低要求,通过网上搜索之后找到了解决途径 首先,打开你的解压后的database文件夹,找到stage,然后cvu,找 ...
- Go基础---->go的基础学习(四)
这里简单的介绍一下go中的关于多线程的知识. Go中的多线程 一.go中简单的并发例子 package main import ( "fmt" "time" ) ...
- MQTT协议笔记之发布流程
MQTT协议笔记之发布流程 前言 这次要讲到客户端/服务器的发布消息行为,与PUBLISH相关的消息类型,会在这里看到. PUBLISH 客户端发布消息经由服务器分发到所有对应的订阅者那里.一个订阅者 ...
- LeetCode——Best Time to Buy and Sell Stock III
Description: Say you have an array for which the ith element is the price of a given stock on day i. ...
- Android 判断是否是Rtl
第一种方法: private boolean isRtl() { return TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) ...
- nodejs 事件EventEmitter
index.js: // 引入 events 模块 var events = require('events'); //处理函数要写在调用前 var eventHandler = function() ...
- 【BZOJ2137】submultiple 高斯消元求伯努利数
[BZOJ2137]submultiple Description 设函数g(N)表示N的约数个数.现在给出一个数M,求出所有M的约数x的g(x)的K次方和. Input 第一行输入N,K.N表示M由 ...
- android系统自带图标
android:src="@android:drawable/ic_media_rew"
- Python 3 利用 Dlib 实现人脸 68个 特征点的标定
0. 引言 利用 Dlib 官方训练好的模型 “shape_predictor_68_face_landmarks.dat” 进行 68 个点标定: 利用 OpenCv 进行图像化处理,在人脸上画出 ...