NetBeans IDE での JDK 7 サポートの概要
NetBeans IDE では、ダイヤモンド演算子、switch 内の文字列、マルチキャッチなどの、新しい JDK 7 言語機能に対するサポートが導入されました。これらの構造をコード内で使用すると、IDE はそれを認識してコード補完で正しいクラスを提供し、エラーを正しく強調表示して、構文を自動的に修正できるようにします。このように、NetBeans IDE は、ユーザーが JDK 7 言語仕様と互換性のあるコードを記述するのに役立ちます。
このチュートリアルでは、IDE で JDK 7 サポートを有効にする方法について学習するとともに、新しい言語構造が IDE でどのように処理されるかを確認します。
目次
このチュートリアルを完了するには、次の表に示すソフトウェアおよびリソースが必要です。
NetBeans IDE での Java 7 の登録
NetBeans IDE で JDK 7 サポートを有効にするには:
- JDK 7 をダウンロードしてシステムにインストールします。
- IDE で、メインメニューから「ツール」>「Java プラットフォーム」を選択します。
- 「プラットフォームを追加」をクリックし、JDK を含むディレクトリを指定します (たとえば Windows では、これは JDK インストールディレクトリであり、デフォルトは C:\Program Files\Java\jdk1.7.0 です)。
Java プラットフォームを含むディレクトリは、
アイコンでマークされています。
- 「プラットフォーム名」の手順で、「プラットフォームのソース」の zip ファイルと API ドキュメントのデフォルトの場所が有効であることを確認します。
- 「完了」をクリックして「Java プラットフォームを追加」ダイアログボックスを閉じます。
- 「プラットフォーム」リストで「JDK 1.7」が選択されていることを確認し、「閉じる」をクリックします。
注: 「プラットフォーム Javadoc」の API のデフォルトの場所は、この Web URL です。オフラインで使用するために、Javadoc の JAR ファイルを JDK7 バイナリスナップショットのページからダウンロードし、そのシステム上の場所を指定できます。
JDK 7 を使用するためのプロジェクトの構成
IDE で JDK 7 を登録したら、この JDK をコンパイル、実行、およびデバッグに使用するようにプロジェクトを構成する必要があります。
- Java プロジェクトを作成します。「ファイル」>「新規プロジェクト」を選択し、プロジェクトの種類として「Java アプリケーション」を選択します。「次へ」をクリックします。
- プロジェクト名として「SwitchTest」と入力し、その場所を指定します。
- 「ファイル」ウィンドウで、「SwitchTest」プロジェクトのノードを右クリックし、「プロパティー」>「ライブラリ」を選択します。このタブで、「Java プラットフォーム」のリストから「JDK 1.7」を選択します。

- 「プロジェクトプロパティー」ウィンドウの「ソース」タブに切り替え、「ソース/バイナリ形式」として「JDK 7」を選択します。

- 「了解」をクリックして変更を保存します。プロジェクトが、新しい JDK 7 言語機能を認識するように設定されています。
新しい JDK 7 言語構造の使用: switch 文
JDK 7 では、国際化、入出力やネットワーキング、セキュリティーなどを含むさまざまな領域で、多くの新機能および拡張機能が導入されています。IDE の Java エディタによる JDK 7 サポートを示すための最善の方法は、Project Coin によって導入されたいくつかの言語変更を示すことです。
これらの変更の 1 つが「switch 内の String」です。以前のバージョンの Java では、switch の引数は、基本データ型である byte、short、char、int、enum のいずれかのみが許可されていました。JDK 7 からは、switch 文の式に型 String の引数を使用できます。
- SwitchTest.java を開き、次のコードを追加します。この小さなサンプルは、いくつかの色の RGB コードを表示します。
JDK 7 では、color 変数を String にすることができます。
package switchtest;
public class SwitchTest {
public static void main(String[] args) {
String color = "red";
String colorRGB;
switch (color.toLowerCase()) {
case "black": colorRGB = "000000"; break;
case "red": colorRGB = "ff0000"; break;
case "green": colorRGB = "008000"; break;
case "blue": colorRGB = "0000ff"; break;
default: colorRGB = "Invalid color"; break;
}
System.out.println(colorRGB);
}
}
ペーストされたコードがエディタで誤って整形されている場合は、Alt-Shift-F キーを押して再整形します。
- 「ファイル」ウィンドウで、プロジェクトのノードを右クリックし、「実行」を選択します。アプリケーションの出力 (赤色の RGB コード) が表示されます。
ターゲットプラットフォームとソース形式が JDK 7 である場合は、構築が成功し、アプリケーションが正常に動作することがわかります。

- 前に戻って JDK 6 を使用し、このアプリケーションが JDK 6 コンパイラでどのようにコンパイルされるかをテストしてみましょう。
「ファイル」ウィンドウで、プロジェクトのノードを右クリックし、「プロパティー」を選択します。「ライブラリ」タブで「Java プラットフォーム」を「JDK 1.6」に設定し、「ソース」タブで「ソース形式」オプションを「JDK 6」に設定します。
JDK6 パーサーでこの構文が認識されないことがただちにわかります。互換性のない変数型のためにコンパイルが失敗します。

- ここで、図に示すように、switch の代わりに if-then-else 文を使用してコードを書き換えてみましょう。
JDK 7 がターゲットプラットフォームであるため、IDE はこのようなケースを認識し、この文を switch 文に変換するよう提案します。
このヒントをクリックすると、if-then-else 構造が、先のコードとまったく同じ switch に自動的に変換されます。

- 別の値を使用してアプリケーションを実行します。
JDK 7 サポート: その他の例
IDE の Java エディタがコードをどのように認識し、JDK 7 言語仕様に準拠するようにどのように自動的に修正するかを示すために、特に意味はないが、言語の主な機能強化がすべて含まれたダミーのコードスニペットを使用しましょう。
このダミーのコードスニペットを調べ、エディタのヒントを適用すると、次を行う方法の例がわかります。
- 型を明示的に指定しなくても Java コンパイラが汎用インスタンスの型を推論できる場合は、自動的な型推論を利用します。型推論のケースにフラグを付けるために、いわゆるダイヤモンド演算子が使用されます。
- 複数の種類の例外に対して 1 つの catch ブロックを使用できる場合は、機能強化された例外処理、つまりマルチキャッチを使用します。
- 自動リソース管理機能によって導入された、リソースクローズ文の新しい構文を使用します。
- 同じ SwitchTest.java ファイル内の前のアプリケーションコードを次に置き換えます
package switchtest;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class SwitchTest {
public void test() throws IOException {
List<String> list = new ArrayList<String>();
HashMap<String, Integer> map = new HashMap<String, Integer>();
HashMap<String, Integer> map2 = new HashMap<String, Integer>();
String a = "ehlo";
try {
Method m = Object.class.getMethod("toString");
m.invoke(this);
} catch(NoSuchMethodException e) {
e.printStackTrace();
} catch(InvocationTargetException e) {
e.printStackTrace();
} catch(IllegalAccessException e) {
e.printStackTrace();
}
FileInputStream in = null;
try {
in = new FileInputStream("foo.txt");
int k;
while ((k = in.read()) != -1) {
System.out.write(k);
}
} finally {
if (in != null) {
in.close();
}
}
}
}
- このチュートリアルの上に示すように、コードを JDK 7 仕様向けに最適化する方法を示す複数のヒントが IDE に表示されます。単純に各ヒントをクリックし、推奨されるアクションを選択します。
- 最終的に、すべての提案を受け入れると、次に示す JDK 7 と互換性のあるコードが得られるはずです。

次の手順
JDK 7 と NetBeans IDE についての詳細は、次のドキュメントを参照してください。
NetBeans IDE での Java アプリケーションの開発についての詳細は、次を参照してください。