前段时间在开源社区上看到了一个叫做lombok的开源工具包,今天拿来练习了一下,确实不错,在这里分享一下:
lombok是什么
lombok 是通过提供简单注解的来帮助我们简化一些必须但又显得很臃肿的 java 代码的工具包。
使用lombok工具包提供的相关注解,可以使得我们的代码更加简洁,编写更高效。
官方有一个简短的视频介绍:https://projectlombok.org/
lombok有哪些特性
这里列举lombok的一些主要特性:
-
val
注解在局部变量上:定义局部变量时可简化设定变量类型,类似于JavaScript中那样设置定义变量时的var
用法:https://projectlombok.org/features/val.html
@NonNull
注解在方法参数上:使用@NonNull为方法或构造函数的参数进行null的声明检查
用法:https://projectlombok.org/features/NonNull.html
@Cleanup
注解在变量上:使用@Cleanup可确保给定资源在代码执行退出之前完成自动清理,如InputStream这样的close()调用;
用法:https://projectlombok.org/features/Cleanup.html
@Getter / @Setter
注解在属性上;为属性提供 setter,getter 方法
用法:https://projectlombok.org/features/GetterSetter.html
@ToString
注解在类上:可实现包括类中属性字段的toString方法
用法:https://projectlombok.org/features/ToString.html
@EqualsAndHashCode
注解在类上:完成类中需要手动覆写的equals方法和hashCode方法的功能
用法:https://projectlombok.org/features/EqualsAndHashCode.html
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
注解在类上:实现一些与构造方法定义相关的功能
用法:https://projectlombok.org/features/Constructor.html
@Data
注解在类上:提供类所有属性的 getter,setter 方法,此外还提供了equals、canEqual、hashCode、toString方法
用法:https://projectlombok.org/features/Data.html
@Value
注解在类上:提供与@Data基本一样的功能,但却又有所区别
用法:https://projectlombok.org/features/Value.html
@Builder
注解在类上:实现一种Builder Patterns(生成器模式)的功能
用法:https://projectlombok.org/features/Builder.html
@SneakyThrows
注解到方法上:可以实现在try...catch到异常后进行的throw操作
用法:https://projectlombok.org/features/SneakyThrows.html
@Synchronized
注解到方法上:实现同步代码片段的功能
用法:https://projectlombok.org/features/Synchronized.html
@Getter(lazy=true)
注解到变量上:懒加载的方式获取一个变量的值,而且是线程安全的
用法:https://projectlombok.org/features/GetterLazy.html
@Log
注解在类上:可以在需要记录日志的类中定义一个日志记录器
用法:https://projectlombok.org/features/Log.html
Configuration system
描述:可以在某一个位置为整个项目配置Lombok特性,可以是您的工作区。
用法:https://projectlombok.org/features/configuration.html
Experimental features
描述:没有在这里列出的一些其他特性,在以下用法中可以进一步了解到
用法:https://projectlombok.org/features/experimental/index.html
以下是由Michael Kimberlin编写的学习教程
http://jnb.ociweb.com/jnb/jnbJan2010.html
个人觉得以上Lombok所提供的这些特性在开发中很实用。
要是哪天在甲骨文公司也觉得很好,直接在JDK中提供啦就好了☺