[英]How can I generate both standard accessors and fluent accessors with lombok?
我试过这个。
@lombok.Getter
@lombok.Setter
@lombok.Accessors(chain = true, fluent = true)
private String prop;
并且@Accessor
优先,并且不会生成getProp
和setProp
。
我怎样才能让它产生这个?
public String getProp() {
return prop;
}
public String prop() {
//return prop;
return getProp(); // wow factor
}
public void setProp(String prop) {
this.prop = prop;
}
public Some prop(String prop) {
//this.prop = prop;
setProp(prop); // wow factor, again
return this;
}
不幸的是,这是不可能的。 您需要实现自己的 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;
}
}
恐怕你不能。
从 文档(重点是我的):
@Accessors
注释用于配置@Accessors
如何生成和查找 getter 和 setter。
所以@Accessors
不会生成任何东西,它只是一种配置@Getter
和@Setter
。
如果您真的想要流畅和常规的 getter/setter,则可以(手动)添加常规的 getter/setter,并使它们委托给流畅的 getter/setter。
@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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.