聞こえないJavaエンジニアが適当に書き連ねていく

つらつらとメモしたり日頃の溜まっている想いを吐き出す場所です。

なぜJavaでgotoが予約語になっているのか

これは何

2020/7/22から開始される、観光のGOTOキャンペーンが開始されるニュースに乗っかって、プログラマ界隈でgoto構文の話題で盛り上がっていた。 その中で、なぜJavaではgoto構文が無いのに、予約語になっているのかという疑問を見かけたので確認した内容のメモ。

確認結果

Java言語仕様 の中に明記されている。 Java 14の言語仕様 (※リンク先はpdf)だと 43ページに記載がある。

The keywords const and goto are reserved, even though they are not currently used. This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly appear in programs.

構文としては存在しないけど、予約語として定義しておくことで、誤ってc++等のgoto構文がある言語の感覚でgotoと書いてしまったときに コンパイラが検知できるように、ということ。

Java6の言語仕様も確認してみたけど、Java6の言語仕様とJava14の言語仕様で表現は全く同じになっている。