酷い翻訳

javac 1.8.0_05を使っていたところ、意味不明なwarningが出た。

Test3a.java:9: 警告: [unchecked] raw型Listのメンバーとしてのadd(E)への無検査呼出しです
        ln.add(10);
              ^
  Eが型変数の場合:
    インタフェース Listで宣言されているEはObjectを拡張します

原文が気になったので、確認してみると、次のようなものだった。

Test3a.java:9: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
        ln.add(10);
              ^
  where E is a type-variable:
    E extends Object declared in interface List

いったい誰が “where E is a type-variable:” を「Eが型変数の場合:」などと意味不明な文句に訳したのだろうか。つまり、次のような意味なのだろう。

Test3a.java:9: 警告: [unchecked] raw型Listのメンバーとしてのadd(E)への無検査呼出しです
        ln.add(10);
              ^
  ここで、Eは次のような型変数です:
    E は Object を継承しているとインタフェース List で宣言されています

あるいはE extends Objectのままの方が分かりやすいかもしれない。

しかし、なんだってこんな意味不明なwarningが、今の今までプロダクトに残っているんだろう。日本人プログラマーはこんな意味不明なメッセージを読んでも読み流しているのか。結局仕事にならないから英語環境に切り替えて仕事をしているのだろうか。