Do you somewhere have a class or interface named T
, or are you using T
as a concrete type name somewhere instead of as a type parameter (which means you might have forgotten somewhere else, for example in an enclosing class, to specify that T
is a type parameter)? I can reproduce your problem with this:
class T { // A concrete type T
}
interface B<T> { // warning: The type parameter T is hiding the type T
}
interface A<T> extends B<T> { // warning: The type parameter T is hiding the type T
T getObject();
}
If I remove class T
, it disappears.