Lomboks @Getter für boolesche Felder verwenden

Verwendung von Lomboks @Getter für Boolesche Felder

1. Einführung

Project Lombok ist eine beliebte Bibliothek zum Reduzieren von Java Boilerplate.

In diesem kurzen Tutorial sehen wir uns an, wie die Annotation@Gettervon Lombok in booleschen Feldern funktioniert, um die Notwendigkeit zu beseitigen, die entsprechenden Getter-Methoden zu erstellen.

2. Maven-Abhängigkeit

Beginnen wir mit dem Hinzufügen vonProject Lombok zu unserenpom.xml:


    org.projectlombok
    lombok
    1.18.2

3. Verwenden von @Getter für einboolean-Feld

Nehmen wir an, wir möchten, dass Lombok eine Zugriffsmethode für unser privates boolesches Feld generiert.

Wir können dieses Feld mit@Getter kommentieren:

@Getter
private boolean running;

Und Lombok wird seineannotation processor verwenden, um eineisRunning()-Methode in der Klasse zu generieren.

Und jetzt können wir darauf verweisen, obwohl wir die Methode nicht selbst geschrieben haben:

@Test
public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() {
    LombokExamples lombokExamples = new LombokExamples();
    assertFalse(lombokExamples.isRunning());
}

3.1. Aboolean Feld mit demselben Namen wie sein Accessor

Fügen wir eine weitere Codezeile hinzu, um das Beispiel etwas kniffliger zu machen:

@Getter
private boolean isRunning = true;

Es wäre etwas umständlich, wenn Lombok eine Methode namensisIsRunning erstellen würde.

Stattdessen erstellt LombokisRunningwie zuvor:

@Test
public void whenBooleanFieldPrefixedWithIs_thenMethodNameIsSameAsFieldName() {
    LombokExamples lombokExamples = new LombokExamples();
    assertTrue(lombokExamples.isRunning());
}

3.2. Zweiboolean Felder mit demselben Accessor-Namen

Manchmal kann es zu Konflikten kommen.

Nehmen wir an, wir müssen die folgenden Zeilen in derselben Klasse haben:

    @Getter
    public boolean running = true;

    @Getter
    public boolean isRunning = false;

Es gibt viele Gründe, warum wir eine verwirrende Namenskonvention wie diese vermeiden sollten. Eine davon ist, dass es einen Konflikt für Lombok schafft.

Nach der Lombok-Konvention hätten diese beiden Felder denselben Namen für die Zugriffsmethode:isRunning. Wenn Sie jedoch zwei Methoden mit demselben Namen in derselben Klasse haben, wird ein Compilerfehler erzeugt.

Lombok löst dieses Problem, indem es nur eine Zugriffsmethode erstellt und in diesem Fall aufrunning, zeigt, basierend auf der Reihenfolge der Felddeklaration:

@Test
public void whenTwoBooleanFieldsCauseNamingConflict_thenLombokMapsToFirstDeclaredField() {
    LombokExamples lombokExamples = new LombokExamples();
    assertTrue(lombokExamples.isRunning() == lombokExamples.running);
    assertFalse(lombokExamples.isRunning() == lombokExamples.isRunning);
}

4. Verwenden von @Getter für einBoolean-Feld

Jetzt behandelt Lombok denBoolean -Styp etwas anders.

Versuchen wir ein letztes Mal dasselbe Laufbeispiel, jedoch mitBoolean anstelle des primitiven Typs:

@Getter
private Boolean running;

AnstattisRunning zu erstellen, generiert LombokgetRunning:

@Test
public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() {
    LombokExamples lombokExamples = new LombokExamples();
    assertTrue(lombokExamples.getRunning());
}

5. Fazit

In diesem Artikel haben wir untersucht, wie die @ Getter-Annotation von Lombok für boolesche Grundelemente und boolesche Objekte verwendet wird.

Und achten Sie darauf, die Probenover on Github zu überprüfen.