lombook常用注解解析

第一天

Lombok 的 @Builder 注解是一种方便地实现建造者模式(Builder Pattern)的方式。Builder 模式通常用于创建复杂的对象,通过链式调用来设置对象的属性,最后通过调用 build 方法来构建对象。

@Builder 注解

  1. 生成 Builder 类

    • 当你在一个类上使用 @Builder 注解时,Lombok 会自动生成一个静态内部 Builder 类。这个 Builder 类有与原始类相同的字段,并通过链式调用方法来设置这些字段的值。

  2. 链式调用

    • 使用 @Builder 注解后,Lombok 会生成一个具有与类字段相同名称的静态内部 Builder 类。这个 Builder 类包含了用于设置类字段值的方法,这些方法支持链式调用。例如,对于属性 name,Builder 类将生成一个 name(String name) 方法,并返回 Builder 自身,使得可以连续调用多个方法来设置属性。

  3. 构建对象

    • Builder 类中会有一个 build() 方法,用于构建最终的对象。在链式调用设置完所有属性之后,调用 build() 方法即可返回一个使用设置好的属性值构建的原始类对象。

@Getter
@Builder
public class Person {
    private String name;
    private int age;
    private String address;
}
​
// 使用示例
public class Main {
    public static void main(String[] args) {
        // 使用 Builder 构建对象
        Person person = Person.builder()
                .name("Alice")
                .age(30)
                .address("123 Main St")
                .build();
​
        // 打印对象信息
        System.out.println(person.getName());
        System.out.println(person.getAge());
        System.out.println(person.getAddress());
    }
}

@Cleanup 注解

Lombok 中的 @Cleanup 注解主要用于简化代码中资源的清理工作,特别是在使用需要手动关闭的资源(如流或连接)时,可以帮助自动化资源的关闭操作,避免手动编写 finally 块来释放资源。

具体来说,@Cleanup 注解可以应用在局部变量上,例如一个输入流或输出流,当该变量离开作用域时,Lombok 会自动生成一个 try-finally 块,确保资源在使用完毕后被正确关闭。

以下是 @Cleanup 注解的一些关键点和用法:

public class Test {
    /**
     * 状态
     * true : 打开
     * false : 关闭
     */
    private boolean status;
​
    public Test() {
        this.status = true;
        System.out.println("初始化,状态: "+this.status);
    }
​
    public void operation() {
        System.out.println("业务操作...");
    }
​
    public void close() {
        this.status = false;
        System.out.println("关闭,状态: "+this.status);
    }
​
    //main方法测试
    public static void main(String[] args) {
        @Cleanup Test test = new Test();
        test.operation();
​
        //其他的业务
        System.out.println("A业务处理...");
    }
}

@SneakyThrows注解

@SneakyThrows注解是由lombok封装的,为代码生成一个try…catch块,并把异常向上抛出来

使用范围: 只能作用在方法和构造函数之上。

而java中常见的异常有两种:

Exception即非运行时异常(编译异常)。

RuntimeException即运行时异常。

然而程序员大部分情况下,处理Exception的常见手段就是外面包一层RuntimeException,接着往上抛(throws Exception)。

  1. 隐藏异常声明:使用 @SneakyThrows 注解可以在方法内部抛出 checked exception 而无需在方法签名上声明该异常,从而避免了方法声明中的异常列表过度膨胀。

  2. 简化异常处理:适用于那些在方法内部可能抛出异常但又不想在方法外部显式处理该异常的情况,可以简化代码结构和提高可读性。

  3. 编译时代码生成:Lombok 在编译时会生成相应的 try-catch 块来捕获受检异常,并把它转换为非受检异常(unchecked exception)抛出,从而避免编译错误。

import lombok.SneakyThrows;
​
public class Example {
    @SneakyThrows
    public void readFile(String filePath) {
        // 读取文件的代码,如果发生 IOException,则会被转换为 RuntimeException 抛出
        // 无需显式地在方法签名中声明 throws IOException
    }
}
Lombok是一个Java库,它提供了一些注解,用于简化Java类的编写。其中一些常用的Lombok注解有: 1. @Getter和@Setter:这两个注解可以自动生成属性的getter和setter方法,从而简化了属性的访问和修改。通过使用@Accessors注解,可以修改默认的setter和getter方法的形式,使其更加流畅。 2. @Builder:这个注解可以帮助我们实现构建器模式,通过链式调用的方式构建对象。在使用时,我们可以通过链式调用的方式设置对象的各个属性,并最终通过.build()方法构建对象。 在你提供的例子中,使用了@Builder注解来构建Demo对象,并通过链式调用的方式设置了name和nums属性的值。最后打印出的demo对象的结果是Demo(name=lucky, nums=[1, 2, 3])。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot 中常用注解及各种注解作用](https://download.youkuaiyun.com/download/weixin_38736011/12762978)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Lombok工具 : 常用注解介绍 (全)](https://blog.youkuaiyun.com/m0_37989980/article/details/126324284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值