一、使用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常见注解的更多相关文章

  1. 小记----------lombok插件idea的安装&常见注解解释及小案例

    Lombok安装插件 软件:idea 2018.3.6版本 1.打开settings

  2. eclipse 按装lombok与注解说明

    原文:http://www.cnblogs.com/ywqbj/p/5711691.html 一.安装lombok 1.下载   lombok-1.16.16.jar 包 我的下载完后放到:/root ...

  3. 来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题)

    今天看代码,发现idea报错,仔细一看调用的get,set方法bean中都没有,但是运行起来却没有问题,这个让我很疑惑.后来发现在类上有一个以前没见过的注解@Data,大概就是因为有他的原因.这个注解 ...

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

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

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

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

  6. 20190905 Lombok常用注解

    Lombok常用注解 val 用于声明类型,将从初始化表达式推断出类型,仅适用于局部变量和foreach循环,而不适用于字段.声明的局部变量为final变量. Java自带类型推断随着JDK版本提升越 ...

  7. Lombok 使用介绍(常见注解)

    目录 @Data @NonNull @Getter & @Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredAr ...

  8. Eclipse - 安装lombok后注解无效

    安装 lombok lombok 的安装过程挺简单的,网上已经有很多相关的博客,这里就不在多说了,可以参考这篇:eclipse集成lombok注解不起作用 但是我按照网上的方式安装之后,注解一直不起作 ...

  9. lombok @EqualsAndHashCode 注解讲解

    官方文档:@EqualsAndHashCode 原文中提到的大致有以下几点: 1. 此注解会生成equals(Object other) 和 hashCode()方法. 2. 它默认使用非静态,非瞬态 ...

随机推荐

  1. sql数据库中如何根据身份证号判断性别

    身份证号有15位和18位的..在sql中该如何判断? I_sex ,) ,) then '男' else '女' END

  2. java高级---->Thread之CyclicBarrier的使用

    CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).今天我们就学习一下CyclicBarrier的用法. Cycl ...

  3. yield方法

    yield方法的作用是房企当前的CPU资源,将他让给其他的任务去占用CPU执行时间,但房企的时间不确定,有可能刚刚放弃,马上又获得CPU时间片. package yield; /** * Create ...

  4. Sencha中Element的使用

    在sencha touch中如果你要是用模板来构造一些UI,那么你就必定要去操作Element,如下是我对Element的一些操作和遇到的问题 获取Elenent Ext.get("ID&q ...

  5. Thinkphp --- 入口文件

    通常入口文件是 index.php <?php define('APP_DEBUG',true); //define('BIND_MODULE','Home'); 这句代码会自动生成Home模块 ...

  6. yii2.0 如何按需加载并管理CSS样式及JS脚本

    链接:http://www.yiichina.com/tutorial/399 (注:以下为Yii2.0高级应用测试) Yii2.0对于CSS/JS 管理,使用AssetBundle资源包类. 视图如 ...

  7. Spring Security使用心得

    某天,你的客户提出这样一个需求,在点击购买商品的时,如果用户没有注册,并且用户没有账号,这时用户去创建账户,然后要直接返回到想购买商品的付款页面.你会该如何基于Spring Security实现? S ...

  8. Golang学习 - builtin 包

    Go builtin包提供了go预先声明的函数.变量等的文档.这些函数变量等的实现其实并不是在builtin包里,只是为了方便文档组织. 这些内置的变量.函数.类型无需引入包即可使用. 默认提供的有: ...

  9. 每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它

    mybatis – MyBatis 3 | 入门 http://www.mybatis.org/mybatis-3/zh/getting-started.html 作用域(Scope)和生命周期 理解 ...

  10. Excel 26机制转换

    [问题描述] 在Excel中,列的名称是这样一个递增序列:A.B.C.….Z.AA.AB.AC.….AZ.BA.BB.BC.….BZ.CA.….ZZ.AAA.AAB….我们需要将上述列名序列和以下自然 ...