🤷 场景
不想要快速复制一个对象,且只修改其中的一个属性。
😎 Lombok 解决方案
提供 @With 注解,可以创建一个克隆的对象,并设置指定的字段值。可配置项如下:
- value:访问级别,默认 AccessLevel.PUBLIC
- onMethod:在生成的方法上可以添加别的注解,类型为 AnyAnnotation[],写法同前面的 onMethod
- onParam:在生成的方法参数上可以添加别的注解,类型为 AnyAnnotation[],写法同前面的 onParam
例子:
// Lombok 代码
@AllArgsConstructor
public class User {
private String name;
@With
private int age;
}
// 反编译得到的代码
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public User withAge(int age) {
return this.age == age ? this : new User(this.name, age);
}
}
参考
1.https://projectlombok.org/features/With
更多文章
1.消除代码冗长神器 - Lombok | 入门-CSDN博客
2.消除代码冗长神器 - Lombok | 安装-CSDN博客
3.消除代码冗长神器 - Lombok | val/var 本地变量声明-CSDN博客
4.消除代码冗长神器 - Lombok | @Setter/@Getter 生成 setter/getter 方法-CSDN博客
5.消除代码冗长神器 - Lombok | @EqualsAndHashCode/@ToString注解详解-CSDN博客
6.消除代码冗长神器 - Lombok | @NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 构造方法-CSDN博客
7.消除代码冗长神器 - Lombok | @Data 通用 POJO 注解-CSDN博客
8.消除代码冗长神器 - Lombok | @With 不可变的 setter 方法-CSDN博客
9.消除代码冗长神器 - Lombok | @Value 不可变 entity-CSDN博客
10.消除代码冗长神器 - Lombok | @Cleanup 自动清理资源-CSDN博客
11.消除代码冗长神器 - Lombok | @Log/@Slf4j 创建日志对象-CSDN博客
12.消除代码冗长神器 - Lombok | @Builder注解 - Builder 设计模式快速实现
13.消除代码冗长神器 - Lombok | @NonNull 判空逻辑
14.消除代码冗长神器 - Lombok | @SneakyThrows 检查型异常转抛
15.消除代码冗长神器 - Lombok | @Synchronized 锁
16.消除代码冗长神器 - Lombok | 试验性注解
17.消除代码冗长神器 - Lombok | 进阶用法 - 全局配置 & 去除Lombok
18.消除代码冗长神器 - Lombok | 高阶用法 -> 手写 @Getter 注解