Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9におけるアンダースコア(_)キーワードとは?識別子として使えなくなった理由とエラー例を解説

Java 9でのアンダースコアの扱いの変更点

以前のバージョンのJavaでは、アンダースコア(「_」)は識別子として利用でき、変数名を作成する際にも自由に使用することができました。

しかし、Java 9以降では、アンダースコア文字は予約語(キーワード)として扱われるようになり、識別子や変数名として使用することはできません。そのため、単一のアンダースコア文字を識別子として記述した場合、プログラムはコンパイルに失敗し、コンパイル時エラーが発生します。

なお、実はJava 8の時点でアンダースコアを識別子として使うと警告が出るようになっており、Java 9で完全に禁止されたという経緯があります。これは、将来的な言語機能拡張のために「_」を特別な用途へ予約する目的がありました。

サンプルコード

public class UnderscoreKeywordTest {
    public static void main(String args[]) {
        int _ = 50;
        System.out.println(_);
    }
}

実行結果(コンパイルエラー)

UnderscoreKeywordTest.java:3: error: as of release 9, '_' is a keyword, and may not be used as an identifier
int _ = 50;
^
UnderscoreKeywordTest.java:4: error: as of release 9, '_' is a keyword, and may not be used as an identifier
System.out.println(_);

ポイントまとめ

  • Java 8まで:アンダースコア「_」は識別子・変数名として使用可能(ただしJava 8では警告あり)
  • Java 9以降:「_」は予約キーワードとなり、識別子として使用するとコンパイルエラーになる
  • エラーメッセージ:"as of release 9, '_' is a keyword, and may not be used as an identifier" と表示される

このように、Java 9以降でレガシーコードを移行する際には、アンダースコアのみの変数名が残っていないか確認し、意味のある名前に置き換える必要があります。

  1. JavaのStrictMathクラスとは?主なメソッドと使い方を解説

    java.lang.StrictMathはfinalクラスであり、Objectクラスのサブクラスです。このクラスには、指数関数・対数関数・平方根や三角関数といった初等的な数値演算を実行するためのメソッドが多数含まれています。 StrictMathクラスのすべてのメソッドはstaticメソッド(静的メソッド)として定義されているため、インスタンスを生成する必要はありません。クラス名を直接指定してメソッドを呼び出すだけで利用できます。 主なメソッド一覧 StrictMathクラスでよく使われるメソッドには以下のようなものがあります。 abs():絶対値を返す acos() / asin()

  2. JavaのsetBounds()メソッドとは?使い方とサンプルコードを解説

    JavaのGUIプログラミングでは、レイアウトマネージャー(Layout Manager)がコンポーネントの位置やサイズを自動的に決定します。しかし、レイアウトマネージャーを使用しない場合は、コンポーネントの位置とサイズを手動で設定する必要があります。そのような場面で活躍するのがsetBounds()メソッドです。フレームのレイアウトマネージャーをnullに設定することで、コンポーネントの位置とサイズを自由に指定できるようになります。setBounds()メソッドの基本setBounds()メソッドは4つの引数を取ります。第1引数と第2引数はコンポーネントの左上隅のx座標・y座標、第3引数はコ