Java 如何使用lombok生成标准访问器和fluent访问器?

Java 如何使用lombok生成标准访问器和fluent访问器?,java,accessor,lombok,Java,Accessor,Lombok,我试过这个 @lombok.Getter @龙目塞特 @lombok.Accessors(chain=true,fluent=true) 私人弦道具; 和@Accessor优先,不生成getProp和setProp 我怎样才能让它生成这个 公共字符串getProp(){ 返回道具; } 公共字符串prop(){ //返回道具; 返回getProp();//wow factor } 公共无效设置属性(字符串属性){ this.prop=prop; } 公共道具(字符串道具){ //this.pr

我试过这个

@lombok.Getter
@龙目塞特
@lombok.Accessors(chain=true,fluent=true)
私人弦道具;
@Accessor
优先,不生成
getProp
setProp

我怎样才能让它生成这个

公共字符串getProp(){
返回道具;
}
公共字符串prop(){
//返回道具;
返回getProp();//wow factor
}
公共无效设置属性(字符串属性){
this.prop=prop;
}
公共道具(字符串道具){
//this.prop=prop;
setProp(prop);//又是一个令人惊叹的因素
归还这个;
}
恐怕你不能

从(重点是我的):

@Accessors
注释用于配置lombok如何生成和查找getter和setter

所以
@Accessors
不会生成任何内容,它只是配置
@Getter
@Setter
的一种方法



如果你真的想要流利的常规的getter/setter,你可以(手动)添加常规的getter/setter,并让它们委托给流利的getter/setter。

不幸的是,这是不可能的。您需要实现自己的Getter和Setter,并添加@Getter@Setter和@Accessors(fluent=true)注释来实现这一点

@Getter
@Setter
@Accessors(fluent = true)
public class SampleClass {
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
因此,您将有如下课程:

public class SampleClass {
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int id(){
        return id;
    }

    public SampleClass id(int id){
        this.id=id;
        return this;
    }
}

晚会有点晚了。发现在以下组合中使用Lombok注释不需要添加setter和getter。因此,在上面的示例中,可以省略getId()和setId(…)
@Data@Accessors(fluent=true)
@mornejvr我尝试了您的建议,但使用Lombok版本1.6.12时出现错误“找不到符号setFirstName(java.lang.String)”,您使用的是哪个版本?@Bruno,我使用的是1.18.8。这可能是因为它只适用于更新版本的LombokI更喜欢使用@Data,而不是同时使用getter和setter,不过请注意,使用它可以获得的不仅仅是getter和setter。至少在我使用该库的几年中,我一直受益于数据提供的内容。问题是如何获得正常的getter\setter和fluent版本。
@Accessors(chain = true)
@Setter @Getter
public class Person {
    private String firstName;
    private String lastName;
    private int height;
}

....

@Test
public void testAccessors() {
    Person person = new Person();

    person.setFirstName("Jack")
        .setLastName("Bauer")
        .setHeight(100);

    assertEquals("Jack", person.getFirstName());
    assertEquals("Bauer", person.getLastName());
    assertEquals(100, person.getHeight());
}