public class X
{
<T extends X> T f1() throws Exception
{
return null;
}
<U extends X> U f2() throws Exception
{
return f1();
}
}
javac выдает следующую ошибку:
X.java:6: type parameters of <T>T cannot be determined; no unique maximal instance exists for type variable T
with upper bounds U,X
return f1();
^
Если заменить "return f1()" на "return this.<U>f1()", то javac проглатывает. Этот баг также известен здесь http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954. И судя по комментам не исправлен в 1.6.13 и исправлен в 1.7. Только я вот одного не понимаю, как же оно в Eclipse компилится...
В Eclipse своя реализация компилятора, она не зависит от стандартного.
ОтветитьУдалить