Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Lombokで自分がやっているフィールド名変更(NetBeans限定)

私も個人的にLombok推しなので、@kisさんの以下記事に賛同(^^)

JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 きしだのはてな

前回のプロジェクトでは開発途中にLombokの存在に気付いたのですが、かなり作り込んだ段階だったので、リスクを恐れて利用しませんでしたが、次回からは絶対に使いたいです!→諦めた当時のエントリ「開発途中で出会ったLombok…

で、上記エントリにある「フィールド名変更が少し面倒」という点ですが、確かに以下のようなコードがあった場合

LombokSample.java

package jp.co.hoge.lomboksample;

import java.util.Date;
import lombok.Getter;
import lombok.Setter;

public class LombokSample {
    @Setter @Getter
    private String str;
    @Setter @Getter
    private int num;
    @Setter @Getter
    private Date date;
}

App.java

package jp.co.hoge.lomboksample;

import java.util.Date;

public class App 
{
    public static void main( String[] args )
    {
        LombokSample sample = new LombokSample();
        sample.setStr("Lombokいいよね");
        int myNumber = sample.getNum();
        sample.setDate(new Date());
    }
}

LombokSampleクラスのフィールド名を変えるには通常、以下の手順を最初に踏むかと思います。

LombokSampleクラスのフィールドでstrをリファクタリングで変数名変更

f:id:kikutaro777:20130730182017j:plain

str2に変えます

f:id:kikutaro777:20130730182058j:plain

App.javaのsetterは残念ながら変わらずエラー

f:id:kikutaro777:20130730182103j:plain

と、残念な感じです。この例ではsetterが1箇所使ってるだけですが、普通は膨大かと(^^;

NetBeansのナビゲータを利用した変更

ただ、NetBeansのナビゲータ(表示されていない場合は、「ウィンドウ」メニューの「ナビゲート」から「ナビゲータ」を選択)に見えているLombokが自動生成したsetter/getterに対して右クリック、リファクタリングをすると…

まずはsetter

f:id:kikutaro777:20130730182408j:plain

変数名をstrからstr2に変える前提ですが。

f:id:kikutaro777:20130730182412j:plain

確認すると参照しているところのメソッド名が変更されています。警告ある点は後程。

f:id:kikutaro777:20130730182454j:plain

同じくgetterも同様にリファクタリングします。

f:id:kikutaro777:20130730182441j:plain

で、先ほどの警告を消すには、フィールド名をstr2に変えれば

f:id:kikutaro777:20130730182459j:plain

これでOKです!

f:id:kikutaro777:20130730182506j:plain

わりと簡単な1つの方法として…

@kisさんがブログに書いていることと趣旨あってるかな(^^;

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村