開発環境におけるLombokによるJava冗長性の排除


LombokはJavaArchive(JAR)ファイルで、Javaコードの冗長性を解消するために使用されます.開発環境でLombokを実現することにより,開発者はhashCode()やequals()のような方法の構築や,従来の様々なaccessorやmutatorを分類するのに多くの時間を節約できる.
このような例を見て、標準的なJavabeanです.典型的なJavabeanには一般的にいくつかの属性があります.各プロパティにはaccessorとmutator(getterとsetter)があります.通常、toString()メソッド、equals()メソッド、hashCode()メソッドもあります.最初は、冗長性が非常に多いことが予想されていました.各プロパティにgetterとsetterがあり、通常はそうである場合、詳細に説明する必要はありません.
Lombokを見てみましょう.コード行を消去するために、Lombokは注釈を使用してクラスとJavaコードブロックを識別します.前述のJavabeanの例では、すべてのgetter、setter、および他の3つの方法がコンパイル時に暗示され、含まれる.
さらに、EclipseまたはIBMを使用している場合は®WebSphere®StudioApplicationDeveloper(まだ使っていない場合は使用することをお勧めします)では、LombokをJavaプロジェクトに統合し、開発時の結果をすぐに得ることができます.言い換えれば、Eclipseコンパイラは、暗黙のgetters/settersをすぐに認識することができ、他のJavaコードはこれらの方法を参照することができる.
最も直接的なメリットはもちろんコード行の減少であり、これは本当に素晴らしいです.また、特定のgetterまたはsetterに特別な注意が必要な場合は、この特定のgetterまたはsetterを見つけるために10行のコードを数える必要はありません.コードもより簡潔になり、冗長性も少なくなります.
Lombokでは、Javabeanだけでなく、コードの他の部分を簡略化できます.例えば、try/catch/finallyブロック内および同期メソッド内の冗長コードを低減することもできる.次に、独自の開発環境で上記の目的を達成する方法を見てみましょう.
Lombokのインストール
インストールするには、EclipseまたはW e b S p h e r e s t u d ioApplicationDeveloperを使用しているとします.そうでなければ、Lombokを使用することができます.しかし、開発時の様々なメリットを享受することはできません.ただし、コンパイル時のメリットは依然として享受できます.まず、ブラウザを開き、URLを指定します.http://projectlombok.org/.
このURLで開いているページの右上隅に大きな単語が表示されます.この単語は「Download」です.単語をクリックしてlombok.jarのダウンロードを開始します.このファイルは解凍する必要はありませんが、他のサイトからダウンロードしたファイルの99%が解凍する必要があります.
このファイルをダウンロードすると、このJARファイルを実行する必要があります.オペレーティングシステムでプロンプトを開き、lombok.jarがインストールされているディレクトリに入り、java-jarlombok.jarと入力します.以上、パス内にJavaRuntimeEnvironment(JRE)が既に存在するとします.ない場合は、追加する必要があります.追加方法については、特定のオペレーティングシステムに関するドキュメントを参照してください.Microsoftを使用している場合®Windows®,では、このlombok.jarアイコンをダブルクリックすることもできます.同様に、グラフィックユーザインタフェース(GUI)からJARを実行できる必要があります.
いずれにしても、最終的にはLombokインストール画面が表示されるはずです.この画面では、EclipseまたはW e b S p h e r e S tudioApplicationDeveloper実行可能ファイルがどこにあるかを尋ねます.デフォルトの位置が正しい可能性があります.しかし、このデフォルトの位置を変更する必要がある場合があります.Install/Updateをクリックすると、LombokはEclipse開発環境に迅速に組み込まれます.Eclipseがすでに実行されている場合は、閉じて再起動する必要があります.
Lombokの使用
これでEclipseまたはW e b S p h e r e s t u d ioApplicationDeveloperでLombokの使用が開始されます.リスト1内のコードを参照してください.

  
  
  
  
  1. 1.Javabean  
  2. publicclassLure{  
  3.  privateStringname;  
  4.  privateintsize;  
  5.  privateStringcolor;  
  6.  privateStringstyle;  

以上は簡単なJavabeanの典型的な始まりです.ここから、各プロパティにgettersとsettersを追加できます.次にequals()メソッド、toString()メソッド、hashCode()メソッドを追加します.Lombokがあれば、上記の操作を自分で行う必要はありません.逆に、@Dataというコメントを追加するだけです.そう、簡単です.インベントリ2には@Dataが含まれています.

  
  
  
  
  1. 2.Javabean  
  2. importlombok.Data  
  3. public@DataclassLure{  
  4.  privateStringname;  
  5.  privateintsize;  
  6.  privateStringcolor;  
  7.  privateStringstyle;  

ただし、上記のコードは、lombok.jarが構築パスにあり、lombok.DataがこのJavaクラスにインポートされている場合にのみ有効であることを覚えておいてください.EclipseまたはW e b S p h e r e S tudioApplicationDeveloperでこのクラスの概要(通常は画面上のこのクラスの右側にある)を表示すると、これらのメソッドがこのLureクラスに自動的に追加されることがわかります.
このサマリーがすぐに表示されない場合は、Eclipse内のWindowメニューをクリックしてShowViewを選択します.表示されるポップアップメニューから、画面の右側に表示されるOutlineを選択します.強制表示クラスの概要のホットキーの組み合わせはAlt+Shift+Q,次いでOである.
別のクラスを作成してLureをインスタンス化すると、すぐにLureが指すメソッド(getName()やsetSize()など)にアクセスできます.equals()、hashCode()、toString()へのアクセスも可能です.素晴らしいですよね?
EclipseまたはW e b S p h e r e s t u d ioApplicationDeveloperを使用していない場合は、これらのメソッドの追加は、実際にコードをコンパイルしたときにのみ承認されます.そのため、EclipseやW e b S p h e r e s t u dioApplicationDeveloperがない場合でもLombokを使用することができますが、Lombokの最初の設計目的はEclipseやW e b S p h e s t u dioApplicationDeveloperと統合することです.
getter/setterメソッドを生成する場合、Lombokは従来の基準に従います.これらのメソッド名はすべてgetまたはsetで始まり、プロパティ名は大文字です.もちろん、属性がBooleanの場合は例外です.この場合、getterはgetではなくisで開始します.これはJavabeanの標準的な実践です.
Javabeanがgetterに特別な要件を持っていると仮定します.リスト2の例では、getStyle()は、色とサイズの組合せを返すことができる.この場合,getStyle()メソッドのコードを自分の意思で記述することができる.Lombokはコードをチェックし、このプロパティに基づいて独自のgetStyleバージョンを作成しません.また、getterメソッドを公開したくないと仮定します.このため、Lombokでは追加パラメータを入力できます.リスト3には、カスタム修飾子(modifier)が示されている.

  
  
  
  
  1. 3.  
  2. privateStringname;  
  3. @Getter(AccessLevel.PROTECTED)privateintsize;  
  4. privateStringcolor;  
  5. privateStringstyle; 

この例ではgetSize()メソッドは公開されません.保護された修飾子を持っているので、派生子クラスにのみ使用でき、Lureクラス自体の内部にあります.Lombokが提供する他のデフォルト値を常に受け入れたいわけではないかもしれません.たとえば、toString()メソッドでは、クラス名とすべての属性名と値がカンマで分割されます.このリストはクラス名の横に表示されます.たとえば、このLureクラスを記録するときに、色に関心がないとします.TOString()のデフォルト設定を変更するには、ToStringコメントを使用します.
http://projectlombok.org/features/index.html