Lombok效率神器

标签(空格分隔): Java


Lombok简介及使用

Lombok 是一种 Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO), 它通过注释实现这一目的。一个标准的Java bean 一般具有若干属性,每个属性具有getter()和setter()方法,Lombok中也用到了注解,但是它并没有用到反射,而是通过在代码编译时期动态将注解替换为具体的代码。所以JVM实际运行的代码,和我们手动编写的包含了各种工具方法的类相同。

如果想在开发时候使用lombok 简介化代码:

IDEA plugin 中添加 lombok支持

添加maven依赖

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>

可以设置为provide ,使其仅在编译期起作用。

maven库:@https://mvnrepository.com/artifact/org.projectlombok/lombok

Lombok注解

val: final 像动态语言一样,声明一个fianl的变量。
var: 同JDK10
@Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法
@Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
@Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
@NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
@Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
@Log作用于类,创建一个log属性
@Builder:使用builder模式创建对象
@NoArgsConstructor:创建一个无参构造函数
@AllArgsConstructor:创建一个全参构造函数
@ToString:创建一个toString方法
@Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。
@RequiredArgsConstructor:创建对象, 例: 在class上添加@RequiredArgsConstructor(staticName = "of")会创建生成一个静态方法
@UtilityClass:工具类
@ExtensionMethod:设置父类
@FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
@Cleanup: 关闭流、连接点。
@EqualsAndHashCode:重写equals和hashcode方法。
@toString:创建toString方法。
@Cleanup: 用于流等可以不需要关闭使用流对象.

例子

1,使用lombok,代码可以简化为以下,自动生成属性的get set 方法。

import lombok.*;
@Setter
@Getter public class Dog {
String name; //默认为 friend级别
int age;
}

@Accessors(chain = true):使用链式创建:

@Setter
@Getter
@Accessors(chain = true)
public class Dog {
private String name;
private Integer age;
} public static void main(String[] args) {
//使用@Accessors(chain = true)
Dog dog = new Dog();
dog.setName("A").setAge(1);
}

其他用法待续。

最新文章

  1. Webstorm 10 for mac osx 注册机,序列号,kegen
  2. WebAPI返回数据类型解惑
  3. 静态代码审查工具FxCop插件开发(c#)
  4. 【JavaScript】EasyUI框架的Dialog控件根据浏览器分辨率自动调节宽高
  5. oc-24-点语法
  6. HDU ACM 1046 Gridland 找规律
  7. Android清理设备内存具体完整演示样例(一)
  8. 配置主机路由表(route)(两)
  9. JQuery中$.ajax()方法参数详解 (20
  10. 我的第一个Android开源库——CirclePointMove中文文档(可随Viewpager移动的指示器)
  11. HTCVIVE定位器更新之后,定位器指示灯不亮,重置基站固件操作指南。
  12. memcache源码编译安装
  13. Spring Boot使用单元测试
  14. ubuntu 18.04下安装配置Hue问题记录
  15. python spawnv用法
  16. loadrunner中pacing设置01
  17. 利用VBS下载EXE文件手法记录
  18. Oracle列自增实现(2)-Identity Columns in Oracle Database 12c Release 1 (12.1)
  19. C# WPF 登录多线程中 “调用线程无法访问对象,因为另一个线程拥有该对象“
  20. [流水账]搜索与web-container版本匹配的jar包

热门文章

  1. MyBatis Mapper XML 详解
  2. Luogu P2915 [USACO08NOV]奶牛混合起来
  3. HDU-5201 The Monkey King
  4. Luogu P1650 田忌赛马
  5. GitHub 上有哪些优秀的 Python 爬虫项目?
  6. 前端技术之:如何Mock GraphQL接口数据
  7. Android应用安全开发之源码安全
  8. VMware 中的win7虚拟机在一段时间后就会自动挂起
  9. Linux往log中写日志
  10. C++有静态成员变量的类继承