凋零 vs 生成器 Lombok 库
wither vs builder Lombok library
我已经开始使用 Lombok 库,但我无法弄清楚使用凋灵和生成器之间的区别。
@Builder
@Wither
public class Sample {
private int x;
private int y;
}
现在我可以通过两种方式创建对象:
Sample s = new Sample().builder()
.x(10)
.y(15)
.build();
或
Sample s = new Sample()
.withx(10)
.withy(10);
两者有什么区别?我应该使用哪一个?
一般来说,不同的是当你用builder()构建一个对象时,你必须最后调用build()方法,在你调用build()之前,所有的属性值都保存在内部builder 对象而不是你用 new 创建的对象。设置所有属性并调用 build() 后,将创建一个新对象。在此处查看详细信息:https://projectlombok.org/features/Builder.html。我认为构建器模式更好的方法是:
Sample s = Sample.builder()
.x(10)
.y(15)
.build();
因为第一个 Sample 对象是多余的。
对于凋零,每次调用 withXXX(xxx) 时,都会返回一个新对象,其中 XXX 设置为 xxx,并且从调用凋零的对象克隆所有其他属性(如果 xxx 与原始 xxx 不同) . 请在此处查看详细信息:https://projectlombok.org/features/experimental/Wither.html)。选择哪种方式,我觉得只看个人习惯和项目的代码风格。
希望对您有所帮助。
@Builder
用于创建可变对象,@Wither
用于不可变对象。
披露:我是 lombok 开发人员。
我已经开始使用 Lombok 库,但我无法弄清楚使用凋灵和生成器之间的区别。
@Builder
@Wither
public class Sample {
private int x;
private int y;
}
现在我可以通过两种方式创建对象:
Sample s = new Sample().builder()
.x(10)
.y(15)
.build();
或
Sample s = new Sample()
.withx(10)
.withy(10);
两者有什么区别?我应该使用哪一个?
一般来说,不同的是当你用builder()构建一个对象时,你必须最后调用build()方法,在你调用build()之前,所有的属性值都保存在内部builder 对象而不是你用 new 创建的对象。设置所有属性并调用 build() 后,将创建一个新对象。在此处查看详细信息:https://projectlombok.org/features/Builder.html。我认为构建器模式更好的方法是:
Sample s = Sample.builder()
.x(10)
.y(15)
.build();
因为第一个 Sample 对象是多余的。
对于凋零,每次调用 withXXX(xxx) 时,都会返回一个新对象,其中 XXX 设置为 xxx,并且从调用凋零的对象克隆所有其他属性(如果 xxx 与原始 xxx 不同) . 请在此处查看详细信息:https://projectlombok.org/features/experimental/Wither.html)。选择哪种方式,我觉得只看个人习惯和项目的代码风格。
希望对您有所帮助。
@Builder
用于创建可变对象,@Wither
用于不可变对象。
披露:我是 lombok 开发人员。