NetBeans IDE での注釈プロセッサのサポート、パート I: プロジェクト Lombok の使用
カスタム注釈が NetBeans IDE でどのように機能するかを示すために、複数の Java コード要素 (取得メソッド、設定メソッド、コンストラクタなど) を自動生成するのに便利な、プロジェクト Lombok を使用します。この機能についての詳細は、「プロジェクト Lombok の Web サイト」を参照してください。ただし、プロジェクト Lombok に含まれる機能の中には、開発環境によっては機能しないものがあるかもしれません。
このチュートリアルを完了するには、次のソフトウェアとリソースが必要です。
注:
- カスタム注釈プロセッサのサポートは、NetBeans IDE 6.9 リリースで追加されました。このチュートリアルは、それより前のバージョンの IDE では動作しません。
Java プロジェクトの新規作成
この課題では、単純な Java プロジェクトと、動作している注釈を示す MyBooks.java という名前のクラスを作成します。
- 「ファイル」>「新規プロジェクト」を選択し、プロジェクトの種類として「Java アプリケーション」を選択します。
- 「新規プロジェクト」ウィザードの「名前と場所」ページで、プロジェクト名として「TestAnn」と入力します。
- 「主クラスを作成」フィールドに「testann.TestBooks」と入力して、デフォルトのクラス名を置き換えます。「完了」をクリックします。
「完了」をクリックすると、IDE によって Java アプリケーションプロジェクトが作成され、TestBooks.java クラスがエディタに表示されます。ここで、新しいプロジェクトが「プロジェクト」ウィンドウに表示され、TestBooks.java クラスが「ソースパッケージ」ノードの下にある testann パッケージに含まれていることが確認できます。
- 「プロジェクト」ウィンドウで「testann」パッケージノードを右クリックし、「新規」>「Java クラス」を選択します。
- 「クラス名」に「MyBooks」と入力し、そのクラスが testann パッケージ内に作成されることを確認します。「完了」をクリックします。
「完了」をクリックすると、IDE によって新しいクラスがエディタに表示されます。
- ソースエディタで、次の 3 つのフィールドを MyBooks.java に追加します。
package testann;
public class MyBooks {
private int year; //fields
private String title;
private String author;
}
- 挿入カーソルをクラス宣言に置き、Ctrl キーを押しながらスペースキーを押して、エディタのコード補完サポートを呼び出します。
- コード補完リストで「MyBooks (int year, String title, String author) - generate」を選択して、MyBooks.java のコンストラクタを生成します。
- 変更を保存します。
プロジェクトのカスタム注釈 (lombok.jar) の有効化
この課題では、プロジェクトの「プロパティー」ウィンドウを変更して、プロジェクトのクラスパスにライブラリを追加し、エディタでの注釈処理を有効にします。
- lombok.jar ファイルをダウンロードして、システムに保存します。
- 「TestAnn」プロジェクトのノードを右クリックして、「プロパティー」を選択します。
- 「プロジェクトプロパティー」ダイアログで「ライブラリ」カテゴリを選択します。
- 「コンパイル」タブで「JAR/フォルダを追加」をクリックし、ダウンロードした lombok.jar ファイルを指定します。
「コンパイル」タブで追加されたリソースは、Java コンパイラの -classpath オプションに相当します。lombok.jar は、注釈定義と注釈プロセッサの両方を含む単一の JAR ファイルであるため、これをプロジェクトのクラスパス (つまり「コンパイル」タブ) に追加する必要があります。
- 「プロジェクトプロパティー」ウィンドウで「コンパイル」カテゴリを選択します。
- 「注釈処理を有効にする」チェックボックスが選択されていることを確認し (デフォルトでは有効)、「エディタでの注釈処理を有効にする」チェックボックスを選択します。
「注釈処理を有効にする」チェックボックスを選択すると、プロジェクトの構築およびコンパイル時に注釈処理が有効になります。このチェックボックスが選択されていないと、-proc:none オプションが Java コンパイラに渡され、どのような注釈処理もされずにコンパイルが実行されます。このため、コードで注釈を処理する場合は、「注釈処理を有効にする」チェックボックスを選択する必要があります。
「エディタでの注釈処理を有効にする」チェックボックスを選択することにより、エディタに注釈処理の結果が表示されるようになります。注釈プロセッサによって生成されたどの追加アーティファクト (クラス、メソッド、フィールドなど) も IDE エディタに表示されるようになり、コード補完、「ナビゲータ」、「型に移動」、「検索」などで使用できるようになります。
- 「プロジェクトプロパティー」ウィンドウで「了解」をクリックして、MyBooks.java ファイルに戻ります。
「プロジェクト」ウィンドウで「ライブラリ」ノードを展開すると、lombok.jar がプロジェクトライブラリとして表示されるようになっていることがわかります。
Lombok カスタム注釈を使用したアプリケーションの記述
- MyBooks.java ファイルで、MyBooks クラス定義の前に「@Data」と入力します。@Data は、Java クラスのボイラープレートコード (すべてのフィールドの取得メソッド、final ではないすべてのフィールドの設定メソッド、およびクラスのフィールドを含む適切な toString、equals、hashCode 実装) を生成する注釈です。
プロジェクト Lombok がサポートする注釈についての詳細は、Lombok の「機能の概要」を参照してください。
- エディタの左マージンにあるヒントをクリックして、lombok.Data のインポートを追加します。
この結果、エディタのコードは次の例のようになっているはずです。
package testann;
import lombok.Data;
@Data
public class MyBooks {
private int year; //fields
private String title;
private String author;
public MyBooks(int year, String title, String author) {
this.year = year;
this.title = title;
this.author = author;
}
}
取得メソッド、設定メソッド、toString などの必要なコードアーティファクトが生成されているのが「ナビゲータ」ウィンドウで確認できます。@Data 注釈によって、一般的なクラスに必要なすべてのボイラープレートコードが生成されました。
Ctrl- スペースキーでコード補完ウィンドウを呼び出すと、生成されたアーティファクトも選択できるようになっているのが確認できます。ここで、プロジェクトがコンパイルされて、生成されたアーティファクトをプログラムのほかの部分から呼び出せることを確認しましょう。
- main メソッドを含む TestBooks.java ファイルを開き、MyBooks クラスの新しいオブジェクトを作成します。
package testann;
public class TestBooks {
public static void main(String[] args) {
MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");
}
}
- books 変数の値を出力するための次のコードを追加します。
値を返すため、lombok.jar によって自動生成された取得メソッドを呼び出します。入力中に、自動生成されたアーティファクトをコード補完ウィンドウから使用できます。
package testann;
public class TestBooks {
public static void main(String[] args) {
MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");
System.out.println("Year: " + books.getYear() + ", Title: " + books.getTitle() + ", Author: " + books.getAuthor());
}
}
- 変更を保存します。
- 「プロジェクト」ウィンドウでプロジェクトノードを右クリックし、「実行」(F6) を選択します。
このアプリケーションを実行すると、アプリケーションが正常にコンパイルされたことを示す次の出力が表示されるはずです。

Lombok 注釈プロセッサによって生成されたアーティファクトが、プログラムのほかの部分からアクセス可能であることが確認できます。
次の手順