Help us understand the problem. What is going on with this article?

Pleiades Eclipse 2020-03 リリース 〜 Java 14 新機能を試そう!

Pleiades All in One Eclipse 2020-03 をリリースしました。現在の Java 11 LTS から 2021 年の Java 17 LTS の移行に向けて、新機能を試しておきましょう。Pleiades All in One の Java Full Edition は解凍するだけで、Java のインストールや環境変数の設定が不要で Eclipse の各種設定も自動で行われるため、すぐに日本語化された Eclipse で Java 14 を利用できます。

Pleiades All in One ダウンロード
http://mergedoc.osdn.jp/
splash.png

Java 14 プロジェクトの作成

デフォルトで設定済みの Java 6, 7, 8, 11, 14 から 14 を選択するだけです。
Java のダウンロードやインストール・パス設定などは不要です。
create_project.png

標準ではないプレビュー機能を使用する場合は、プロジェクトのプロパティーを設定します。
プロジェクト > 右クリック > プロパティー
java14_setting.png

Java コードテキストの貼り付け便利機能

これは昔からある機能なのですが、パッケージ・エクスプローラーのツリーの src 配下にファイルではなく、Java のソースコードテキストを直接貼り付けるだけで、以下の動作となり楽ちんです。右クリして 新規 > クラス > ダイアログ とか不要です。

  • 貼り付けたテキストの class 宣言に合わせて .java ファイルが作成される
  • 貼り付けたディレクトリ位置に合わせて package 宣言を書き換えてくれる
  • エディターが開く

Java 14 新機能

switch、レコード、テキストブロック、パターンマッチのサンプルコードです。
貼り付けて試しやすいように 1 クラスにしています。

import static java.lang.System.*;
import java.time.Month;

class Demo {

    public static void main(String[] args) {

        //--------------------------------------------------
        // switch (Java 14 標準)
        {
            // 複数ラベル - 結果: "Hello\nWorld\n"
            var i = 1;
            switch (i) {
                case 0, 1, 2: out.println("Hello");
                default :  out.println("World");
            }
        }
        {
            // アロー - 結果: Hello
            var i = 2;
            switch (i) {
                case  2 -> out.println("Hello");
                default ->  out.println("World");
            }
        }
        {
            // switch 式 - 結果: 大の月
            var month = Month.MARCH;
            String day = switch(month) {
                case APRIL, FEBRUARY, JUNE, NOVEMBER, SEPTEMBER -> "小の月";
                case AUGUST, DECEMBER, JANUARY, JULY, MARCH, MAY, OCTOBER -> "大の月";
            };
            out.println(day);
        }

        //--------------------------------------------------
        // record (Java 14 プレビュー)
        {
            // インナー record 定義
            record Point(int x, int y) {}

            // getter 自動生成 - 結果: 10
            out.println(new Point(10, 20).x());

            // toString 自動生成 - 結果: Point[x=10, y=20]
            out.println(new Point(10, 20));

            // equals 自動生成 - 結果: true
            out.println(new Point(10, 20).equals(new Point(10, 20)));
        }

        //--------------------------------------------------
        // テキストブロック (Java 14 セカンドプレビュー)
        {
            // 結果: "Hello\n    World"
            String s = """
                    Hello
                        World
                            """;
            System.out.println(s);
        }

        //--------------------------------------------------
        // instanceof パターンマッチ (Java 14 プレビュー)
        {
            // instanceof で代入 - 結果: 3
            Object object = 1;
            if (object instanceof Integer i) {
                out.println(i + 2);
            }
            // 型と値の複合条件
            if (object instanceof Integer i && i == 1) {
                out.println(i);
            }
        }

        //--------------------------------------------------
        // NullPointerException 詳細出力 (Java 14 標準)
        // 実行構成の VM 引数に -XX:+ShowCodeDetailsInExceptionMessages 追加
        // 結果:
        /*
        Exception in thread "main" java.lang.NullPointerException:
            Cannot invoke "String.length()" because "s" is null
                at Demo.main(Demo.java:78)
        */
        {
            String s = null;
            s.length();
        }
    }
}
cypher256
Pleiades 作ってます。 https://pleiades.io/
http://mergedoc.osdn.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした