S-JIS[2024-03-22] 変更履歴

無名変数

Javaの無名変数について。


概要

Java22(プレビュー版ではJava21)で、無名変数が使えるようになった。
すなわち、使用しない変数に「_」が指定できるようになった。

(Java8では「_」を使うとコンパイル時に警告が出ていた。Java9〜Java21ではコンパイルエラーになっていた。→以前の仕様


無名変数「_」の例。

使用箇所
ローカル変数 int _ = 1;
long _ = 2;
for文 for (int i = 0, _ = someInt(); i < 10; i++) {
  System.out.println(i);
}
for each文 var list = List.of("a", "b", "c");
for (var _ : list) {
  System.out.print("+");
}
try-with-resources Closeable c1 = () -> System.out.println("c1.close");
Closeable c2 = () -> System.out.println("c2.close");
try (var _ = c1; var _ = c2) {
}
catchブロック try {
  〜
} catch(Exception _) {
  // ignore
}
ラムダ式の引数 BiFunction<Integer,Integer,Integer> f = (x, _) -> x * 2;
ラムダ式の引数(var) BiFunction<Integer,Integer,Integer> f = (var x, var _) -> x * 2;
insntaceofのパターンマッチング record Point(int x, int y) {}

if (o instanceof Point(var x, _)) {
  System.out.println(x);
}
switchのパターンマッチング switch (o) {
case Point(var x, _):
  System.out.println(x);
  break;
}

Java目次へ戻る / 新機能へ戻る / 技術メモへ戻る
メールの送信先:ひしだま