連載
» 2006年06月28日 10時00分 公開

JavaTips 〜Javaプログラミング編:Eclipseとjavacとでfor文の初期化部のエラーが異なる

[平野正喜,@IT]

 for文の第1項である初期化部では、複数の変数を同時に初期化できます。しかも、変数のスコープをforブロックの内側に制限したい場合、宣言もできるので便利です。

 しかし、この時、型が等しい変数だけなら問題はありませんが、型の違う変数を指定すると、指定方法によって分かりづらいエラーが表示されることがあります。しかも、Eclipse上の場合と、javacによるコンパイルの場合でメッセージが異なるので注意が必要です。

 例えば、int型の変数とlong型の変数の定義と初期化を、for文の第1項に指定すると、下記のように、Eclipseとjavacとで異なるエラーが表示されます。

画面1 Eclipseの場合 画面1 Eclipseの場合
画面2 javacの場合 画面2 javacの場合

 javacのエラーメッセージは不親切で、ここに挿入できるidentifierはありません。また、Eclipseのエラーメッセージに従って「long」を外すわけにもいきません。

片方の定義をfor文の前に行うと?

 そこで、long型の変数の定義をfor文の前に行うと、今度はローカル変数が重複しているというエラーになってしまいます。

画面3 Eclipseの場合 画面3 Eclipseの場合
画面4 javacの場合 画面4 javacの場合

 これは、for文の第一項が、単独の文で「int i = 0, l = 0;」とした場合と同様に「2つのint型の変数の定義と初期化」になってしまうからです。

 よって、型の違う変数をfor文の第1項に指定することはできず、必要な場合の定義と初期化は、for文の前に行う必要がある訳です。

画面5 こうすればOK 画面5 こうすればOK

Profile

RunDog.org

平野正喜


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。