From K&B Chapter 7: Page number 604:
One of the most common mistakes programmers make when creating
generic classes or methods is to use a <?> in the wildcard syntax rather than a type variable <T>, <E>, and so on. This code might look right, but isn�t:
public class NumberHolder<? extends Number> { }
While the question mark works when declaring a reference for a variable,
it does NOT work for generic class and method declarations. This code is not legal:
public class NumberHolder<?> { ? aNum; } // NO!
But if you replace the <?> with a legal identifier, you�re good:
public class NumberHolder<T> { T aNum; } // Yes
Hope this clarfies your doubt !!!
