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/
Java 14 プロジェクトの作成
デフォルトで設定済みの Java 6, 7, 8, 11, 14 から 14 を選択するだけです。
Java のダウンロードやインストール・パス設定などは不要です。
標準ではないプレビュー機能を使用する場合は、プロジェクトのプロパティーを設定します。
プロジェクト > 右クリック > プロパティー
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();
}
}
}