[英]wither vs builder Lombok library
我已经开始使用Lombok库,我无法弄清楚使用wither和构建器之间的区别。
@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
用于创建可变对象, @Wither
用于不可变对象。
披露:我是一名lombok开发者。
通常,区别在于使用builder()构建对象时,必须最后调用build()方法,并且在调用build()之前,所有属性值都保存在内部构建器对象中,而不是您创建的对象中。新。 设置完所有属性并调用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 )。 选择哪种方式,我认为这取决于您的个人习惯和项目的代码风格。
希望这可以帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.