2016-04-12 21 views
0

Ich habe das versucht.Wie kann ich mit Lombok sowohl Standard-Accessoren als auch fließende Accessoren generieren?

@lombok.Getter 
@lombok.Setter 
@lombok.Accessors(chain = true, fluent = true) 
private String prop; 

Und @Accessor hatte Vorrang und getProp und setProp werden nicht erzeugt.

Wie kann ich das erzeugen lassen?

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

Antwort

4

Leider ist das unmöglich. Sie müssen eigene Getter und Setter implementieren und @Getter @ Setter und @Accessors (fließend = wahr) Annotationen hinzufügen, um dies zu erreichen.

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

    public int getId() { 
     return id; 
    } 

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

Im Ergebnis haben Sie Klasse wie:

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; 
    } 
} 
4

Ich fürchte, Sie können nicht.

Vom doc (Schwerpunkt liegt mir):

Die @Accessors Anmerkung wird verwendet zu konfigurieren, wie lombok erzeugt und sucht nach Getter und Setter.

So @Accessors generiert nichts, es ist nur eine Möglichkeit, @Getter und @Setter zu konfigurieren.


Wenn Sie wirklich wollen fließend und regelmäßige Getter/Setter, können Sie (manuell) in die reguläre und an die fließend knüpfen delegieren.