NetBeans IDEでのJDK 7サポートの概要

NetBeans IDEでは、ダイヤモンド演算子、switch内の文字列、マルチ・キャッチなどの、Java 7言語機能がサポートされています。これらの構造をコード内で使用すると、IDEはそれを認識してコード補完で正しいクラスを提供し、エラーを正しく強調表示して、構文を自動的に修正できるようにします。このように、NetBeans IDEは、ユーザーがJava言語仕様、Java SE 7 Editionと互換性のあるコードを記述するのに役立ちます。

このチュートリアルでは、Java 7言語構造がIDEでどのように処理されるかについて学習します。

目次

このページの内容は、NetBeans IDE 7.4および8.0に適用されます

このチュートリアルを完了するには、次の表に示すソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE バージョン7.4または8.0
Java Development Kit (JDK) バージョン7または8

NetBeans IDEでのJDK 7の登録の確認

NetBeans IDEでJDK 7が登録されていることを確認するには:

  1. IDEで、メイン・メニューから「ツール」>「Javaプラットフォーム」を選択します。
  2. 「Javaプラットフォーム・マネージャ」ダイアログ・ボックスの「プラットフォーム」リストで、JDK 1.7が選択されていることを確認します。

    登録されているJavaプラットフォーム

  3. 「閉じる」をクリックします。

プロジェクト構成の確認

登録されたJDKをコンパイル、実行およびデバッグに使用するようにプロジェクトが構成されているか確認するには:

  1. 「ファイル」>「新規プロジェクト」を選択し、プロジェクト・タイプとして「Javaアプリケーション」を選択することでJavaプロジェクトを作成します。
  2. 「次」をクリックします。
  3. プロジェクト名として「SwitchTest」と入力し、その場所を指定します。
  4. 「終了」をクリックします。
  5. 「プロジェクト」ウィンドウで、「SwitchTest」プロジェクトのノードを右クリックし、「プロパティ」>「ライブラリ」を選択します。このタブで、「Javaプラットフォーム」リストで「JDK 1.7」が選択されていることを確認します。

    ターゲット形式として選択されているJDK 7

  6. 「プロジェクト・プロパティ」ウィンドウの「ソース」タブに切り替え、「ソース/バイナリ形式」として「JDK 7」が選択されていることを確認します。

    ソース形式として選択されているJDK 7

  7. 「OK」をクリックして、「プロジェクト・プロパティ」ダイアログ・ボックスを閉じます。プロジェクトが、Java 7言語機能を認識するように構成されています。

新しいJDK 7言語構造の使用: switch文

JDK 7では、国際化、I/Oやネットワーキング、セキュリティなどを含む様々な領域で、多くの新機能および拡張機能が導入されています。IDEのJavaエディタによるJDK 7サポートを示すための最善の方法は、Project Coinによって導入されたいくつかの言語変更を示すことです。

これらの変更の1つが「switch内のString」です。以前のバージョンのJavaでは、switchの引数は、基本データ型であるbyteshortcharintenumのいずれかのみが許可されていました。JDK 7からは、switch文の式に型Stringの引数を使用できます。

  1. 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]を押して再フォーマットします。

  2. 「プロジェクト」ウィンドウでプロジェクトのノードを右クリックし、「ファイルの実行」を選択します。アプリケーションの出力(赤色のRGBコード)が表示されます。
    ターゲット・プラットフォームとソース形式がJDK 7である場合は、ビルドが成功し、アプリケーションが正常に動作することがわかります。

    プロジェクト実行の出力

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

    エラー

  4. ここで、次のように、switchのかわりにif-then-else文を使用してコードを書き換えてみます。
    package switchtest;
    
        public class SwitchTest {
    
        public static void main(String[] args) {
    
            String color = "red";
            String colorRGB;
            if (color.equals("black")) {
                colorRGB = "000000";
            } else if (color.equals("red")) {
                colorRGB = "ff0000";
            } else if (color.equals("green")) {
                colorRGB = "008000";
            } else if (color.equals("blue")) { 
                colorRGB = "0000ff";
            } else {
                colorRGB = "Invalid color";
            }
            System.out.println(colorRGB);
            }
        }
    
    JDK 7がソース/バイナリ形式であるため、次の図に示すように、IDEはこのようなケースを認識し、この文をswitch文に変換するよう提案します。

    switchへの変換のヒント

    このヒントをクリックすると、if-then-else構造が、先のコードとまったく同じswitchに自動的に変換されます。

JDK 7サポート: その他の例

IDEのJavaエディタがコードをどのように認識し、JDK 7言語仕様に準拠するようにどのように自動的に修正するかを示すために、ここでは、言語の主な機能強化がすべて含まれたダミーのコード・スニペットを使用します。

このダミーのコード・スニペットを調べ、エディタのヒントを適用すると、次を行う方法の例がわかります。

  • 型を明示的に指定しなくてもJavaコンパイラが汎用インスタンスの型を推論できる場合は、自動的な型推論を利用します。型推論のケースにフラグを付けるために、いわゆるダイヤモンド演算子が使用されます。
  • 複数の種類の例外に対して1つのcatchブロックを使用できる場合は、機能強化された例外処理、つまりマルチ・キャッチを使用します。
  • 自動リソース管理機能によって導入された、リソース・クロージャ文の新しい構文を使用します。
  1. 同じSwitchTest.javaファイル内の前のアプリケーション・コードを次のコードに置き換えます。
    package switchtest;
    
    
    import java.io.FileInputStream;
    import java.lang.reflect.Method;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    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();
                }
            }
        }
    }
     
  2. このチュートリアルの上に示すように、コードをJDK 7仕様向けに最適化する方法を示す複数のヒントがIDEに表示されます。単純に各ヒントをクリックし、提案されたアクションを選択します。
  3. 最終的に、すべての提案を受け入れると、次に示すJDK 7と互換性のあるコードが得られるはずです。

    変換されたコード・スニペット


関連項目

JDK 7とNetBeans IDEの詳細は、次のドキュメントを参照してください。

NetBeans IDEでのJavaアプリケーションの開発の詳細は、次を参照してください。

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo