共计 1823 个字符,预计需要花费 5 分钟才能阅读完成。
Java 项目中,充斥着太多不友好的代码:POJO 的 getter/setter/toStringm 异常处理,I/ O 流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok 应运而生。
Lombok 是以注解的方式减少了代码量, 虽说 IDEA 的插件可以自动生成 get/set/toString 方法,但是使用 Lombok 可以让代码更简洁。
IDEA 安装插件
打开 IDEA 的 Settings 面板
选择 Plugins 选项,然后点击“Browse repositories”
在输入框输入”lombok”,得到搜索结果,点击安装,然后安装提示重启 IDEA,安装成功
Eclipse 的 Lombok 插件安装可自行谷歌百度
项目中引入依赖
在自己的项目里添加 lombok 的编译支持,在 pom 文件里面添加以下代码
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope></dependency>
scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok 在编译期将带 Lombok 注解的 Java 文件正确编译为完整的 Class 文件。
怎么用
主要注解
@Getter 生成成员变量的 getter 方法
@Setter 生成成员变量的 getter 方法
@NoArgsConstructor 生成无参构造器
@RequiredArgsConstructor 生成包含 final 和 @NonNull 注解的成员变量的构造器
@EqualsAndHashCode 生成覆盖默认的 equals 和 hashCode
@ToString 生成覆盖默认的 toString()方法
@Data 以上注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @NoArgsConstructor
@Log4j 生成 log4j 日志变量
@AllArgsConstructor 生成全参构造器
@NonNull 作用于成员变量和参数中,标识不能为空,否则抛出空指针异常
@Cleanup 自动关闭资源
@SneakyThrows 检异常进行捕捉并抛出
@Synchronized 替换 synchronize 关键字或 lock 锁
重要注解详解
@Getter
注解在 [属性] 上: 为单个属性提供 get 方法; 注解在 [类] 上,为该类所有的属性提供 get 方法; 都提供默认构造方法。
@Setter
注解在 [属性] 上: 为单个属性提供 set 方法; 注解在 [类] 上,为该类所有的属性提供 set 方法; 都提供默认构造方法。
@NoArgsConstructor @EqualsAndHashCode @ToString 使用与上类似, 不累赘说明
@Data
注解在 [类] 上: 提供类所有属性的 get 和 set 方法,此外还提供了 equals、canEqual、hashCode、toString 方法。看 Structrue 图可看出
@Log4j
注解在 [类] 上: 为类提供一个 属性名为 log 的 log4j 日志对象,提供默认构造方法。
@Cleanup
注解用在 [变量] 上: 保证此变量代表的资源会被自动关闭,针对实现了 java.io.Closeable 接口的对象有效,如:典型的 IO 流对象
@SneakyThrows
注解在 [方法] 上,可以对受检异常进行捕捉并抛出 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常
@Synchronized
注解在 [类方法] 或者 [实例方法] 上,效果和 synchronized 关键字相同
区别: 锁对象不同对于类方法:
synchronized 关键字锁对象为: 类的 class 对象
@Synchronized 锁对象为: 私有静态 final 对象 lock
对于实例方法:
synchronized 关键字锁对象为: this 对象
@Synchronized 锁对象为: 私有 final 对象 lock
怎样? 看起来不错吧! 赶紧用起来!
坚持日更:40 天
推荐阅读:
「神器」资源管理神器 Clover, 风一样的效率
致低头族
「趣图」程序员极度崩溃的 10 个瞬间
阅读原文查看更多精彩内容
您的点赞、转发是对我最大的支持!
THANDKS
End –
一个立志成大腿而每天努力奋斗的年轻人
伴学习伴成长,成长之路你并不孤单!