Reports generic method parameters that can use bounded wildcards in your API.

To quote Josh Bloch in "Effective Java" third Edition item 31:


Use bounded wildcards to increase API flexibility.

Using wildcard types in your APIs, while tricky, makes the APIs far more flexible. Remember the basic rule: producer-extends, consumer-super (PECS). And remember that all Comparables and Comparators are consumers.

Example:

void process(Consumer<Number> consumer);
should be replaced with:
void process(Consumer<? super Number> consumer);
This method signature is more flexible because it accepts more types (not only Consumer<Number> but also Consumer<Object>).

Likewise, type parameters in covariant position:

T produce(Producer<T> p);
should be replaced with:
T produce(Producer<? extends T> p);