1前書き


プロジェクトロンボク

は、Javaの定型文を減らすための一般的なライブラリです。

この簡単なチュートリアルでは、Lombokのhttps://projectlombok.org/features/GetterSetter[

@Getter

]注釈がブール値フィールドにどのように機能して、対応するgetterメソッドを作成する必要がないかを確認します。


2 Mavenの依存関係

まず、https://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.projectlombok%22[Project Lombok]を

pom.xml

に追加します。

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


3

boolean

フィールドで@Getterを使用する

Lombokにプライベートブールフィールド用のアクセサメソッドを生成させたいとしましょう。

そのフィールドに

@ Getter

というアノテーションを付けることができます。

@Getter
private boolean running;

そしてロンボクはhttps://www.baeldung.com/java-annotation-processing-builder[注釈プロセッサ]を使ってクラス内に

isRunning()

メソッドを生成します。

メソッドを自分で書いていなくても、今ではそれを参照できます。

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


3.1. アクセサと同じ名前を持つ

boolean

フィールド

例を少しトリッキーにするために別のコード行を追加しましょう。

@Getter
private boolean isRunning = true;

Lombokが

isIsRunning

というメソッドを作成した場合、少し面倒です。

代わりに、Lombokは以前のように

isRunning

を作成します。

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


3.2. 同じアクセサ名を持つ2つの

boolean

フィールド

時々、衝突があるかもしれません。

同じクラスに次の行を含める必要があるとしましょう。

    @Getter
    public boolean running = true;

    @Getter
    public boolean isRunning = false;

このようなわかりにくい命名規則を避けるべき理由はたくさんあります。そのうちの一つは、それがロンボク族にとって紛争を引き起こすということです。

Lombokの規約を使用すると、これら2つのフィールドは同じアクセサメソッド名

isRunning

を持ちます。しかし、同じクラスに同じ名前の2つのメソッドがあると、コンパイラエラーが発生します。

Lombokはこれを解決するために、アクセサメソッドを1つだけ作成し、この場合はフィールド宣言順に基づいて____runningを指すようにします。

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


4

Boolean

フィールドで@Getterを使用する

現在、Lombokは

__Boolean

__typeを少し異なる方法で扱います。

同じ実行例をもう一度試してみましょう。ただしプリミティブ型の代わりに

__Boolean

__を使います。

@Getter
private Boolean running;


isRunning

を作成する代わりに、Lombokは

getRunning

を生成します。

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


5結論

この記事では、Lombokの@Getterアノテーションをブール・プリミティブとブール・オブジェクトに使用する方法を調べました。

そして、https://github.com/eugenp/tutorials/tree/master/lombok[Githubでお見逃しなく]のサンプルを必ずチェックしてください。