在另一个字段的 setter 中调用一个字段的 setter

Call a setter of a field inside a setter of another field

我想在初始化另一个字段后立即初始化一个字段,如下面的代码所示:

@Setter
class Person {
    private String fullName;
    private String shortName;

    public void setFullName(String fullName) {
        this.fullName = fullName;
        setShortName();
    }

    private void setShortName() {
        this.shortName = this.fullName.substring(0, 1);
    }
}

废弃 shortName 字段并使用 getter 的方法,returns 所需的值是不可接受的。我需要这个字段,因为我将我的对象作为 JSON 对象传输到前端(我想在那里打印 shortName)。

我的 class 也使用来自 Lombok 框架的 @Setter 注释。因此,我的 class 的用户将能够通过一个参数使用所需的 setter。同时 setShortName() 方法是私有的(正如@shmosel 建议的那样)。

问题悬而未决:在 setFullName(String fullName) 中调用 shortName 的 setter 是个好主意吗?

最好的方法是什么?

class Person {
    private String fullName;
    private String shortName;

    public Person(String fullName){
        this.fullName = fullName;
        this.shortName = fullName.substring(0, 1);
    }
}