ace ace - 3 years ago 128
Java Question

What is the difference between '?', 'E', and 'T' for Java generics?

I come across Java code like this:

public interface Foo<E> {}

public interface Bar<T> {}

public interface Zar<?> {}


What is the difference among all three of the above and what do they call this type of class or interface declarations in Java?

Answer Source

Well there's no difference between the first two - they're just using different names for the type parameter (E or T).

The third isn't a valid declaration - ? is used as a wildcard which is used when providing a type argument, e.g. List<?> foo = ... means that foo refers to a list of some type, but we don't know what.

All of this is generics, which is a pretty huge topic. You may wish to learn about it through the following resources, although there are more available of course:

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download