Lombok-如何在java中创建自定义setter并应用于不同的成员

Lombok-如何在java中创建自定义setter并应用于不同的成员,java,lombok,Java,Lombok,我想了解如何在Lombok中创建自定义setter,并在特定成员上应用setter。我有一个有100个成员的类,其中50个成员有一个自定义setter,在我设置值之前检查X,另50个成员有一个自定义setter,在我设置值之前检查Y。能做到吗? 这是一个例子, 2名成员2名不同的设定者, 此代码对我班的所有成员重复: @JsonProperty("TAC_LAC_Start_UE1") private Integer tacLacStartUe1; @JsonProperty("TAC_LAC

我想了解如何在Lombok中创建自定义setter,并在特定成员上应用setter。我有一个有100个成员的类,其中50个成员有一个自定义setter,在我设置值之前检查X,另50个成员有一个自定义setter,在我设置值之前检查Y。能做到吗? 这是一个例子, 2名成员2名不同的设定者, 此代码对我班的所有成员重复:

@JsonProperty("TAC_LAC_Start_UE1")
private Integer tacLacStartUe1;

@JsonProperty("TAC_LAC_Start_UE2")
private Integer tacLacStartUe2;

@Override
public void setTacLacStartUe1(Integer tacLacStartUe1) {
    if (Objects.equals(getTacLacStartUe1(), tacLacStartUe1)) {
        return;
    }
    this.tacLacStartUe1 = tacLacStartUe1;
    if (DocKind.ORIG == docKind) {
        ((EventDocument) prepareDirtyDocument()).setTacLacStartUe1(tacLacStartUe1);
    }
}

@Override
public Integer getTacLacStartUe2() {
    return tacLacStartUe2;
}

@Override
public void setTacLacStartUe2(Integer tacLacStartUe2) {
    if (Objects.equals(getTacLacStartUe2(), tacLacStartUe2)) {
        return;
    }
    this.tacLacStartUe2 = tacLacStartUe2;
    if (DocKind.ORIG == docKind) {
        ((EventDocument) prepareDirtyDocument()).setTacLacStartUe2(tacLacStartUe2);
    }
}

基于当前版本的文档(),它似乎没有包含为setter(或getter)指定自定义检查的方法。我担心您将不得不手动为每个setter编写代码

这同样适用于该功能。

如前所述,Lombok目前不支持该功能。但是,通过将setters逻辑提取到以下高阶函数,仍然可以消除一些重复代码:

private void doSetTacLacStartUe(
        Integer oldValue,
        Integer newValue,
        Consumer<Integer> setter,
        BiConsumer<EventDocument, Integer> eventDocumentUpdater
) {
    if (Objects.equals(oldValue, newValue)) return;
    setter.accept(newValue);
    if (DocKind.ORIG == docKind)
        eventDocumentUpdater.accept((EventDocument) prepareDirtyDocument(), newValue);
}

我不知道你在问什么。什么意义上的“习俗”?向我们展示您想要生成的代码示例,我们将告诉您是否可能。“我有一个拥有100个成员的类”Lombok与否,这听起来像是一个糟糕的设计我同意,但我不能更改设计。。我只是想要一种使用Lombok或其他第三方简化getter和setter的方法…我编辑我的问题您可以尝试创建自定义Lombok注释。谢谢,我可以创建多个自定义setter并将它们应用于我的类的特定成员吗?
public void setTacLacStartUe1(Integer tacLacStartUe1) {
    doSetTacLacStartUe(getTacLacStartUe1(), tacLacStartUe1, it -> this.tacLacStartUe1 = it, EventDocument::setTacLacStartUe1);
}