Generics&javacでコンパイルエラー
こんなコードを書いてみる。
で、これがEclipseのコンパイラだと通るけど、
public class Test {
publicE method1() {
Object o = new Object();
return (E) o;
}
publicE method2() {
E obj = method1();
return obj;
}
}
javacだとコンパイルエラーになる。
コンパイルエラーの内容はこんな感じ。
正直、エラーのメッセージの意味がまったくわからん。
Test.java:8: 型パラメータE を判別できません; 型変数 E (上限 E,java.lang.Object) の固有の最大インスタンスが存在しません。
E obj = method1();
^
うーん、、、
ちょっと探してみたけど、これと同じことなのかなぁ。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=98379
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954
一応、javacのバグってことになっているみたい。
でも、Closed, fixed となってるけど、最新版でもまだ通らない。
下記のようにすればコンパイルが通るようになるけど、
これじゃGenericsの意味がないような。
E obj = (E) method1();