Upgrade to Pro — share decks privately, control downloads, hide ads and more …

最新Javaへの誘い

Avatar for aoi aoi
September 04, 2026
130

 最新Javaへの誘い

Avatar for aoi

aoi

September 04, 2026

Transcript

  1. メソッドの簡略化(Java 25) ① main Compact Source Files and Instance Main

    Methods(JEP 512) Java 21でプレビュー開始(JEP 445)→ 22, 23, 24と改良 → Java 25で正式化 1. main が public static でなくてよくなった も省略可。既存コードへの影響はなし 2. クラス宣言も省略できる →コンパクトソースファイル。トップレベルのコードをコンパイラが暗黙的に包 んでくれる 3. `java.lang.IO` クラスが新設 → `java.base` も自動import。 `System.out.println` も不要に → `String[] args`
  2. Hello world Before (Java17) で比較 public class Hello { public

    static void main(String[] args) { System.out.println("Hello world!"); After (Java25) void main() { IO.println("Hello world!"); } } } の呪文が不要 ② クラス宣言も省略できる ③ `System.out` も不要( `java.lang.IO` ) ① `public static void main`
  3. ( ) ② Sequenced Collections Java 21 Sequenced Collections(JEP 431)/Java

    21で正式化(プレビュー期間なし) Before (17) After (21) String first = list.get(0); String last = list.get(list.size() - 1); String first = list.getFirst(); String last = list.getLast(); list.add(0, "new"); list.remove(list.size() - 1); list.addFirst("new"); list.removeLast(); 先頭・末尾の操作が、どのコレクションでも同じ書き方に ② おまけで `reversed()` も全部に(コピーではなくビュー) ①
  4. のパターンマッチング ③ switch Pattern Matching for switch(JEP 441) Java 17でプレビュー開始(JEP

    406)→ 18, 19, 20と改良 → Java 21で正式化 Before (17) String result; if (obj instanceof Integer i) { After String result = switch (obj) { case Integer i -> "int: " + i; result = "int: " + i; } else if (obj instanceof String s) { result = "String: " + s; } else { (21) case String s default -> "String: " + s; -> "unknown"; }; result = "unknown"; } ① 分岐の条件が「型」になった ② switch が「文」から「式」になった