つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

lombokを使う場合の自動生成メソッドのデバッグ(break)

   

lombokを使うとgetter, setterメソッドを自動生成してくれます。これを使った場合のデバッグ(ステップ実行)の話です。Intellijで解説しますが、Eclipseでも同じです。結論としてはできませんが、代替案はある感じです。

lombokの基本

@Dataや@AllArgsConstructorというアノテーションをJavaBeanに付けるとlombokがgetter, setterや全パラメタ有りのコンストラクタを自動生成してくれます。

例を見てみます。※試す場合はlombokプラグインをインストールしたり(Intellijの場合)、lombokをインストールしたり(Eclipseの場合)してください。

また、jarを用意するかMavenに以下のdependencyを書いておいてください。

 

これらのアノテーションを付けるとどうなるか見てみます。まずはIDE上ではこうなります。

lombok1

右側のStructureに注目してください。色々なメソッドが自動生成されています。getterとかありますね。後は普通に使うだけです。

setterやgetterでbreakしてステップ実行したい

残念ながらできません・・・。ソースコードが無いのでbreakポイントを設定できません。右側のStructureからメソッドを選択して”Toggle Method Breakpoint”をしても設定できません。

代替策としてフィールドに対してbreakpointを設定する方法があります。

lombok2

例えばageフィールドに対して設定して、詳細を開いてみます。

このような画面が出るので後はWatch設定を適宜変えるだけです。上記の設定だとsetされたときにbreakしますが、getされたときにもbreakしたいのであればField accessをONにしておきます。

フィールドブレイクの確認(Field Watchの確認)

上記のブレイクポイントの設定のまま、以下のコードを用意してデバッグ実行してみます。

ちゃんと3回ブレイクしました(コンストラクタ部分、setAge(30)の部分、invokeの部分

以下はinvokeの部分でbreakした例です。

lombok3

下側の部分でthisがage=30, 実引数がage=40となっていて、正しくbreakできています。

以上です。

 - Java, ライブラリ