情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Eclipse:「Initializer does not complete normally」とは

Eclipse (60) Java (37)

見たことのないエラーがEcipse+Javaで表示されたのでメモ。

表示されたメッセージ

Javaファイルの編集中に、赤線が引かれ、「Initializer does not complete normally」と表示されました。少しわかりにくい。

原因

 

原因は、メソッドの中身の始まりと終了を表す「{}」を、2つ連続で書いてしまっていた。

「public void getXxx() {} { ... }」のように、自動入力で追加された「{}」の後に、それに気が付かずに(「()」と見間違えて「{...}」と中身を新しく「{}」を追加して書いてしまっていたようでした。

この「余計な{}」ではなく、続きの「{...}」に赤い波線が引かれていたため、その赤い波線の中に何か問題があるのかと思ってしまいました。

人間の感覚では余計に感じる「{}」も、たしかにそこまでは文法上正しく、そこになぜか続いてしまう、class直下の「{...}」こそ「余計」なので、このように赤線が引かれてしまうのでしょう。

補足

このエラー文中の「Initializer」は、ここではインスタンス初期化子(Instance Initializer)のことを表しています。こんな位置に書かれた「{}」も、あくまでclass直下と言うことで、Instance Initializerとみなされるようです。

今回はその中身が不適切だったわけでエラーが表示されたに過ぎず、中身によってはInitializerとして問題なく、今回のような「二重の中括弧」が見逃されてしまう可能性があります。

コメント(0)

新しいコメントを投稿