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());
}