Как с помощью 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());
}
Другие вопросы по тегам