enumのswitchの実装がJDK1.5とJDK1.6で異なると思ってたら、これは大きな間違いだった(汗)
正しくはコンパイラーの実装の違い、すなわちSunのjavacとEclipse3.2の違いだった。
それぞれの中では、JDK1.5と1.6での差は無いようだ。
今までEclipseもSunの(すなわちインストールされた)javacを使ってコンパイルしてるのかと思ってたけど、そうじゃないんだな。
そういえば、Eclipseの『ビルドパスの設定』ではJRE(実行環境)のバージョン、すなわちJREの場所(ディレクトリー)は指定できるけど、『Javaコンパイラーの設定』では準拠するバージョンを指定するだけで、JDK(javac)の場所は指定できないなぁ。
よく考えてみれば、SuppressWarningsアノテーションで指定できる警告の種類がEclipseとSunのjavacで異なるのも、コンパイラーの実体が違うせいなんだなー。
(って改めて見たら、自分で自分のページにそう書いてるじゃん!(爆))
ということは、Eclipseがコンパイルしてclassファイルを置くディレクトリーに、別途Antのjavacタスクを使ってコンパイルして上書きするのは良くないってことかー!?
(普通はそんなことしないだろうけど、ファイル数が多すぎてEclipseでのコンパイルでOutOfMemoryErrorが発生するのを回避する為に、分割コンパイルするようにbuild.xmlを書いたんだよなー。もっとも、この時はEclipseの自動コンパイルはオフにしてあったので、Eclipseがコンパイルすることは無いからセーフか。あぶねー)
(さすがにAntのjavacタスクはSunのjavacを使ってるよな…?)