Java基础:Lombok 的神级用法

Lombok 提供了一系列“神级”用法,即那些能够极大地简化代码、提升开发效率、降低错误率并保持代码整洁的特性。以下列举了一些具有代表性的神级用法及其示例代码:

  1. @Data: 一键生成所有必要的基础方法(getter、setter、equals、hashCode、toString 和无参构造器)。适用于简单数据模型类。

    @Data
    public class Person {
        private String firstName;
        private String lastName;
        private int age;
    }
    

    上述代码等同于手动编写了所有的 getter、setter、equals(), hashCode()toString() 方法,以及一个无参构造器。

  2. @Value: 与 @Data 类似,但创建的是不可变对象。所有属性默认为 final,且只有全参构造器。适用于需要保证对象状态不可变的情况。

    @Value
    public class ImmutablePerson {
        private final String firstName;
        private final String lastName;
        private final int age;
    }
    

    这里不仅生成了必要的方法,还确保了对象一旦创建就不能再修改其属性值。

  3. @Builder: 提供了一个链式构建器模式,便于创建复杂的对象实例,尤其是当类有多个参数且部分参数可能为 null 时。

    @Data
    @Builder
    public class Address {
        private String street;
        private String city;
        private String state;
        private String zipCode;
    }
    
    // 使用方式
    Address address = Address.builder()
                            .street("123 Main St")
                            .city("Anytown")
                            .state("CA")
                            .zipCode("12345")
                            .build();
    

    无需手动编写构建器类,直接通过注解创建了易于使用的构建器API。

  4. @AllArgsConstructor / @NoArgsConstructor / @RequiredArgsConstructor: 分别生成包含所有字段的构造器、无参构造器和仅包含 final 或 @NonNull 字段的构造器。

    @Data
    @AllArgsConstructor // 全参构造器
    @NoArgsConstructor // 无参构造器
    public class Order {
        private long id;
        @NonNull private String item;
        @NonNull private int quantity;
    }
    

    根据需要选择合适的构造器注解,简化了构造函数的编写。

  5. @SneakyThrows: 非常方便地隐藏受检异常(Checked Exception),避免大量 try-catch 代码块。

    @SneakyThrows(IOException.class)
    public void readFromFile(String path) {
        BufferedReader reader = new BufferedReader(new FileReader(path));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
    

    在此示例中,readFromFile() 方法不再需要显式捕获或声明 IOException

  6. @Wither: 生成带有返回新对象的 setter 方法(也称为“with”方法),适合于不可变对象或链式调用。

    @Value
    public class Point {
        int x;
        int y;
    
        @Wither
        public Point withX(int newX) {
            return new Point(newX, y);
        }
    
        @Wither
        public Point withY(int newY) {
            return new Point(x, newY);
        }
    }
    
    // 使用方式
    Point p = new Point(1, 2).withX(3).withY(4);
    

    通过 with 方法可以创建新对象并更改单个属性,而不会改变原始对象。

  7. @Log / @Slf4j / @CommonsLog 等日志注解: 自动为类添加日志记录器实例,无需手动初始化。

    @Slf4j
    public class LoggingService {
        public void processRequest(Request request) {
            log.info("Processing request: {}", request.getId());
            // ...
        }
    }
    

    类中可以直接使用日志记录器,无需显式创建 Logger 实例。

以上这些用法展示了 Lombok 如何通过注解极大地简化 Java 编程,减少样板代码,提升代码可读性和开发效率。实际使用时可以根据项目需求选择合适的注解组合。

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值