一、简介
- 是一个 Java 库
- 通过使用注解来简化 Java 代码的编写,用于生成常见的代码,如 getter, setter, equals, hashCode, 构造函数 等方法
- 安装插件 Lombok
- 引入依赖
-
<!-- Lombok依赖 为了简化实体类的编写代码量 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
-
二、使用
1. @val
- 取代任意类型作为局部变量
-
public static void example() { // val 代替 ArrayList<String> val ex = new ArrayList<String>(); ex.add("test"); // val 代替 String val ex1 = ex.get(0); }
2. @NonNull
- 修饰方法,做非空判断,若传入空值会报 NullPointerException
-
public NonNullExample(@NonNull String name){ this.name = name; }
3. @Cleanup
- 自动在使用后关闭资源
-
public void cleanupTest throws IOException { String inStr = "Hello World!"; //使用输入输出流自动关闭,无需编写try catch和调用close()方法 @Cleanup ByteArrayInputStream in = new ByteArrayInputStream(inStr.getBytes("UTF-8")); @Cleanup ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] b = new byte[1024]; while (true) { int r = in.read(b); if (r == -1) break; out.write(b, 0, r); } String outStr = out.toString("UTF-8"); System.out.println(outStr); }
4. @Getter/@Setter
- 修饰变量或类,生成对应变量的 getter/setter 方法
5. @ToString
- 生成默认包含所有类属性的 toString 方法
6. @EqualsAndHashCode
- 生成默认包含所有类属性的 hashCode 和 equals 方法
7. @XxConstructor
- @NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor
8. @Data
- 修饰类,4、5、6、7的组合体
9. @Value
- 修饰类,声明其为 final 类,无法被继承,且属性也都变为 final
10. @Builder
- 通过建造者模式来创建对象,使用链式调用
11. @SneakyThrows
- 自动捕获并抛出异常,替代 try …… catch
12. @Synchronized
- 修饰方法,替代关键字 synchronized 实现同步访问,多个线程同步调用一个方法
13. @With
- 修饰类,实现原对象克隆,并改变其中一个属性
-
@With @AllArgsConstructor public class WithExample { private Long id; private String name; private Integer age; public static void main(String[] args) { WithExample example1 = new WithExample(1L, "test", 20); //将原对象进行clone并设置age,返回false WithExample example2 = example1.withAge(22); System.out.println(example1.equals(example2)); } }
14. @Getter(lazy=true)
- 修饰属性,对比较消耗资源的属性实现懒加载
15. @Log
- 修饰类,生成日志对象 log,通过 log 对象打印日志
-
@Log public class LogExample { public static void main(String[] args) { log.info("level info"); log.warning("level warning"); log.severe("level severe"); } }
16. @Slf4j
- 另一种日志实现,除此以外还有 @Log4j, @Log4j2 等
-
import org.slf4j.Logger; import org.slf4j.LoggerFactor; private static final Logger LOGGER = LoggerFactor.getLogger(leiming.class); LOGGER.debug("模板:{}", charuduixiang)