@Accessors(chain = true) 注解

本文探讨了在信息技术背景下,技术专家如何理解和运用内容社区的文章结构,强调了关键元素在创建和解读文章中的重要性。

不写默认为false,当该值为 true 时,对应字段的 setter 方法调用后,会返回当前对象。
在这里插入图片描述

`@Accessors(chain = true)` 是 Lombok 提供的一个注解,用于**自定义生成的 getter 和 setter 方法的行为**。它通常与 `@Data`、`@Getter`、`@Setter` 等 Lombok 注解一起使用,用来改变 Java Bean 中访问器方法(accessor methods)的风格。 --- ### ✅ 作用说明 当设置 `chain = true` 时: - **setter 方法将返回当前对象实例(即 `this`)**,从而支持**链式调用(Fluent API)**。 - 这样可以避免多次重复写对象名,使代码更简洁、可读性更高。 --- ### 📌 示例代码 #### 1. 使用 `@Accessors(chain = true)` ```java import lombok.Accessors; import lombok.Getter; import lombok.Setter; @Accessors(chain = true) @Getter @Setter public class User { private String name; private int age; private String email; } ``` #### 2. 链式调用示例 ```java public class Main { public static void main(String[] args) { User user = new User() .setName("Alice") .setAge(25) .setEmail("alice@example.com"); System.out.println(user.getName()); // 输出: Alice } } ``` > ⚠️ 注意:如果不加 `@Accessors(chain = true)`,setter 返回类型是 `void`,无法链式调用。 --- ### 🔧 其他参数 `@Accessors` 还支持其他属性: | 属性 | 类型 | 说明 | |------|------|------| | `chain` | boolean | 是否让 setter 返回 `this`(默认 `false`) | | `fluent` | boolean | 是否启用“流畅模式”:getter/setter 都不带 `get`/`set` 前缀(如 `name()` 设置并返回 this) | | `prefix` | String[] | 指定字段前缀,Lombok 会自动忽略这些前缀生成 getter/setter | #### 示例:使用 `fluent = true` ```java import lombok.Accessors; @Accessors(fluent = true) public class Person { private String name; private int age; } ``` 生成的方法类似: ```java public String name() { return this.name; } public Person name(String name) { this.name = name; return this; // 自动链式返回 } ``` 调用方式: ```java Person p = new Person().name("Bob").age(30); ``` --- ### 💡 实际应用场景 - 构造对象时需要设置多个属性(如 DTO、Builder 模式替代) - 编写 DSL(领域特定语言)或 Fluent API - 减少样板代码,提升开发效率 --- ### ❗注意事项 1. `@Accessors` 是 Lombok 注解,需引入 Lombok 依赖: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> ``` 2. IDE 必须安装 Lombok 插件才能正确识别生成的方法(如 IntelliJ IDEA)。 3. 如果同时使用 `@Builder`,一般不需要手动使用 `@Accessors(chain = true)`,因为 Builder 模式本身就支持链式构建。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值