覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

Lombok - IntelliJ IDEAのLombok Pluginによる操作

以前のエントリでIntelliJ IDEAへLombok Pluginをインストール手順を記載しました。

このPluginを利用することでIntelliJ IDEA上で、Lombokの操作を一部補助してくれます。


Lombokのアノテーションの貼り付け

メニューからの選択操作でコード上にLombokのアノテーションを付与することができます。


(1) アノテーションを付与するクラスを開きます

f:id:nini_y:20161117220624p:plain

(2) Refactor > Lombok と選択し、表示された中から付与するアノテーションを選択します(ここでは@Dataを選択します)

f:id:nini_y:20161117220633p:plain

(3) 対象のクラスに@Dataが付与されました

f:id:nini_y:20161117220725p:plain

結果を見てわかりますが、余計なアノテーションのimportまで追加されています・・・


delombok

以前のエントリでLombokのアノテーションにより実際に生成されるコードを確認するためのdelombokの機能について書きました。
その際は、コマンドラインからの操作かMavenと連動させる操作となっていました。

Lombok PluginによりIntelliJ IDEA上の操作でdelombokを簡単に実行することが可能です。


以下クラスをIntelliJ IDEA上で開いている状態とします。

import lombok.Value;

@Value
public class User {
    private String name;
    private int age;
}

(1) Refactor > Delombok と選択します。さらにどのアノテーションを展開するかを選択します(ここでは All lombok annotations を選択します)

f:id:nini_y:20161117220807p:plain

(2) delombokの結果が表示されます(実際に対象のjavaファイルの内容が置き換わっているので注意が必要です。必要に応じてundo操作等で元に戻してください)

f:id:nini_y:20161117220819p:plain


本Puluginを用いた際にdelombokに関してやや不思議な動きをする部分があります。仕様なのかバグなのか・・・
@Valueを付与した以下クラスが存在しているとします。

import lombok.Value;

@Value
public class User {
    private String name;
    private int age;
}

このクラスに対して、先の操作と同じようにdelombokをIntelliJ IDEA上で実行すると、以下の結果が出力されます。

f:id:nini_y:20161117220828p:plain

基本的に問題ないコードにも見えますが、なぜかクラスやメンバがfinalになっていません。
ご愛敬なのか何なのか謎ですが、現時点ではこんな出力になってしまいます。



関連エントリ