Java >> Java tutorial >  >> Tag >> boolean

Brug af Lomboks @Getter til booleske felter

1. Introduktion

Project Lombok er et populært bibliotek til at reducere Java kedelplade.

I denne hurtige vejledning tager vi et kig på, hvordan Lomboks @Getter annotation virker på booleske felter for at fjerne behovet for at oprette dens tilsvarende getter-metoder.

2. Maven Dependency

Lad os starte med at tilføje Project Lombok til vores pom.xml :

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
</dependency>

3. Brug af @Getter på en boolean Felt

Lad os sige, at vi ønsker, at Lombok genererer en accessormetode til vores private booleske felt.

Vi kan kommentere dette felt med @Getter :

@Getter
private boolean running;

Og Lombok vil bruge sin annotationsprocessor til at generere en isRunning() metode i klassen.

Og nu kan vi henvise til det, selvom vi ikke selv har skrevet metoden:

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

3.1. En boolsk Felt med samme navn som dets tilbehør

Lad os tilføje endnu en kodelinje for at gøre eksemplet en smule vanskeligt:

@Getter
private boolean isRunning = true;

Det ville være lidt besværligt, hvis Lombok lavede en metode kaldet isIsRunning .

I stedet opretter Lombok isRunning som før:

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

3.2. To boolske Felter med samme accessornavn

Nogle gange kan der være konflikter.

Lad os sige, at vi skal have følgende linjer i samme klasse:

    @Getter
    public boolean running = true;

    @Getter
    public boolean isRunning = false;

Der er mange grunde til, at vi bør undgå en forvirrende navnekonvention som denne. En af dem er, at det skaber en konflikt for Lombok.

Ved at bruge Lomboks konvention vil disse to felter have det samme adgangsmetodenavn: erRunning . Men at have to metoder med samme navn i samme klasse vil skabe en kompileringsfejl.

Lombok løser dette ved kun at oprette én accessormetode og i dette tilfælde pege den på løb,  baseret på feltangivelsesrækkefølge:

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

4. Brug af @Getter på en Boolean Felt

Nu behandler Lombok det boolske  skriv bare lidt anderledes.

Lad os prøve vores samme løbeeksempel en sidste gang, men med Boolesk  i stedet for den primitive type:

@Getter
private Boolean running;

I stedet for at oprette isRunning , Lombok genererer getRunning :

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

5. Konklusion

I denne artikel undersøgte vi, hvordan man bruger Lomboks @Getter-annotering til boolske primitiver og boolske objekter.

Og sørg for at tjekke prøverne over på Github.


Java tag