Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Troubleshooting "The type parameter T is hiding the type T" warning

I am getting a warning in eclipse (the most recent version) for the following code.

public interface A<T> extends B<T> {      public T getObject(); } 

The warning appears at 'T' in 'A' and reads: "The type parameter T is hiding the type T".

The weird part is that the following code generates no errors or warnings.

public interface A extends B<T> {      public T getObject(); } 

But now I can't extend A while telling it what type T is.

I am completely confused. Anyone know why this is happening?

like image 812
nikdeapen Avatar asked Apr 04 '12 13:04

nikdeapen


1 Answers

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.

like image 117
Jesper Avatar answered Sep 21 '22 07:09

Jesper