Как с помощью 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;
}
2 ответа
Решение
К сожалению это невозможно. Вам нужно реализовать собственные методы получения и установки и добавить аннотации @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 void id(int id){
this.id=id;
}
}
Боюсь, ты не сможешь.
Из документа (акцент мой):
@Accessors
аннотация используется для настройки того, как lombok генерирует и ищет геттеры и сеттеры.
Так @Accessors
ничего не генерирует, это просто способ настроить @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());
}