Ich habe das Verhalten zusammengefasst, wenn der von lombok erzeugte Getter dupliziert wird.
Die Felder "a" und "A" erzeugen beide eine Methode namens "getA ()". Welcher Feldwert wird durch Ausführen von "getA ()" erhalten? Die Ergebnisse sind wie folgt.
OneCharacter.java
/**Felder, die mit Kleinbuchstaben beginnen*/
@Getter
public class OneCharacter {
private String a = "a";
private String A = "A";
public void print() {
System.out.println(getA()); //⇒"a"
}
}
OneCharacter.java
/**Felder, die mit Kapital beginnen*/
@Getter
public class OneCharacter {
private String A = "A";
private String a = "a";
public void print() {
System.out.println(getA()); //⇒"A"
}
}
Wenn der in der Klasse definierte Getter und der von lombok generierte Getter denselben Namen haben, welcher wird aufgerufen?
Die Ergebnisse sind wie folgt.
OneCharacter.java
@Getter
public class OneCharacter {
public String getA() { return "getA()";}
private String A = "A";
public void print() {
System.out.println(getA()); //⇒"getA()"
}
}
OneCharacter.java
@Getter
public class OneCharacter {
private String A = "A";
public String getA() { return "getA()";}
public void print() {
System.out.println(getA()); //⇒"getA()"
}
}
Die in der Klasse definierten Getter wurden unabhängig von der Reihenfolge der Deklaration aufgerufen.
Wir haben einen Kommentar von @inabajunmr erhalten.
Das obige Phänomen wurde in lombok @Getter und @Setter beschrieben.
You can annotate any field with @Getter and/or @Setter, to let lombok generate the default getter/setter automatically. A default getter simply returns the field, and is named getFoo if the field is called foo (or isFoo if the field's type is boolean). A default setter is named setFoo if the field is called foo, returns void, and takes 1 parameter of the same type as the field. It simply sets the field to this value.