首页 > 解决方案 > Lombok - 如何创建自定义设置器并应用于java中的不同成员

问题描述

我想了解如何在 Lombok 中创建自定义设置器并将设置器应用于特定成员。我有一个有 100 个成员的类,对于其中的 50 个成员,我有一个自定义设置器,可以在设置值之前检查 X,另外 50 个有自定义设置器,可以在设置值之前检查 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);
    }
}

标签: javalombok

解决方案


根据当前版本的文档(https://projectlombok.org/features/GetterSetter),它似乎不包括为 setter(或 getter)指定自定义检查的方法。我担心您将不得不手动编写每个 setter 代码。

这同样适用于实验性的 @Accessor功能。


推荐阅读