Lombok(以“简化Java开发”的目标)是一个Java库,可以通过注解的方式简化Java代码的编写。它通过注解来自动生成一些样板代码,减少了开发人员需要手动编写的重复代码,提高了代码的简洁性和可读性。
以下是Lombok中常用的注解及其作用:
@Getter
/ @Setter
: 自动生成字段的 getter
和 setter
方法。@Getter @Setter
private int age;
@ToString:
自动生成 toString()
方法。@ToString
public class Person {
private String name;
private int age;
}
@EqualsAndHashCode
: 自动生成 equals()
和 hashCode()
方法。@EqualsAndHashCode
public class Person {
private String name;
private int age;
}
@NoArgsConstructor
/ @AllArgsConstructor
: 自动生成无参构造方法和包含所有参数的构造方法。@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String name;
private int age;
}
@Builder
: 自动生成构建者模式相关的方法,用于创建对象。详情参考【注解】@Builder、@SuperBuilder Lombok 中的建设者
@Builder
public class Person {
private String name;
private int age;
}
// 使用
Person person = Person.builder().name("John").age(25).build();
@Data
: 包含了 @ToString
、@EqualsAndHashCode
、@Getter
、@Setter
、@AllArgsConstructor
的功能,一次性生成所有这些方法。大写的牛!@Data
public class Person {
private String name;
private int age;
}
@Slf4j
/ @Log
: 自动生成日志记录器。@Slf4j
public class MyClass {
public void myMethod() {
log.info("Hello, World!");
}
@Cleanup
: 自动为可以关闭的资源,实现的 closeable
接口添加 try-finally
代码块,用于资源的自动释放。参考【java】Closeable 接口是什么@Cleanup
InputStream in = new FileInputStream("example.txt");
// 这里可以使用 inputStream 对象,不用手动关闭
// 在方法结束时,Lombok 会自动在这里插入 try-finally 代码块,关闭 inputStream
这些注解能够简化代码,提高开发效率,但需要注意过度使用可能会导致代码可读性下降。因此,建议仅在适当的情况下使用Lombok,以确保代码的清晰度和可维护性。