Eclipse内蔵コンパイラとSunのJDKの違い
Eclipseに内蔵されているJavaコンパイラは、SunのJDKのものとは異なる。
そのため、ときおり挙動の異なる部分が見つかることがある。たとえば以下。
class Test {
public static void main(String args[]) {
Long l = 0L;
Double d = 100.0;
l += d; //エラー
}
}
上記のコードは、EclipseではコンパイルできるがJDK付属のjavacではコンパイルできない。
また、Genericsを使用した下記のコードも、Sunのコンパイラではエラーになる。
class GenericsTest {
public static void main(String args[]) {
List
どっちの挙動が正しいのだろう?
いずれにしてもワークベンチ上でコンパイルエラーになっていないからといって、迂闊にリポジトリにコミットするとJDKでコンパイルできないコードが混入してしまうので注意が必要だ。