Community
Participate
Working Groups
The following code compiles just fine in javac and eclipse: ---Bug.java public class Bug { public interface AClass<X extends AClass, Y extends AClass> { public interface BClass<T extends BClass, U extends BClass> extends AClass<T, U> { } } public class CClass<T extends AClass.BClass<T,T>> { } } however, separating out the AClass into a separate file: ---AClass.java public interface AClass<X extends AClass> { public interface BClass<T extends BClass> extends AClass<T> { } } ---Bug.java public class Bug { public class CClass<T extends AClass.BClass<T>> { } } gives an error in Bug.java (a red underline on the 'T') saying: "Bound mismatch: The type T is not a valid substitute for the bounded parameter <T extends AClass.BClass> of the type AClass<X>.BClass<T>". The "<X>" in "AClass<X>.BClass<T>" here looks a little suspect. "public class CClass<T extends AClass<T>>" works in both eclipse and javac as you'd expect, as does "public class CClass<T extends BClass<T>>" if BClass is moved to a new file. Static importing BClass out of an AClass, however, doesn't change eclipse's failure. Javac compiles all cases without comment.
Cannot reproduce in 3.1.1 nor 3.2m2. Added GenericTypeTest#test838