我想配置Lombok,使其生成名为
这个可以实现吗?如果可以,如何操作?
field()
而不是getField()
的getter。这个可以实现吗?如果可以,如何操作?
lombok.accessors.fluent = true
fluent选项为我们提供访问方式,这些方式没有get或set前缀。
现在我们来看一下chain选项,但由于它默认启用,所以现在让我们明确地禁用它:
@Accessors(fluent = true, chain = false)
@Getter
@Setter
public class FluentAccount {
private String name;
private BigDecimal balance;
}
@Test
public void givenFluentAccount_thenUseFluentAccessors() {
FluentAccount account = new FluentAccount();
account.name("Fluent Account");
account.balance(BigDecimal.TEN);
assertEquals("Fluent Account", account.name());
assertEquals(BigDecimal.TEN, account.balance());
}
现在让我们来看看chain选项:
@Accessors(chain = true)
chain选项提供了返回this的setter。请注意,默认情况下它设置为true,但为了清晰起见,我们将明确设置它。
这意味着我们可以在一个语句中组合多个set操作。
让我们在流畅访问器的基础上构建,并将chain参数更改为true:
@Accessors(fluent = true, chain = true)
@Getter
@Setter
public class ChainedFluentAccount {
private String name;
private BigDecimal balance;
}
如果省略链和直接指向,我们可以获得相同的效果:
@Accessors(fluent = true)
@Test
public void givenChainedFluentAccount_thenUseChainedFluentAccessors() {
ChainedFluentAccount account = new ChainedFluentAccount()
.name("Fluent Account")
.balance(BigDecimal.TEN);
assertEquals("Fluent Account", account.name());
assertEquals(BigDecimal.TEN, account.balance());
}
注意使用setter时新语句变得更长,这些setter被绑在一起,从而去除了某些模式。
当然,这就是 Lombok @Builder 如何使用链式的 fluent 访问器。
somePerson.name
)或与字段名称相同的方法(somePerson.name()
)。 - Basil Bourque