A generic method or class that operates on numbers will used bounded type parameters to restrict the type parameters accepted.
The extends keyword, followed by one or several upper bounds.
If one of the bounds is a class, it must be specified first
<T (extends|super) B1 [& B2 & ... & Bn]>
where:
In this context, extends is used in a general sense to mean either:
public <U extends Number> void inspect(U u)
public class NaturalNumber<T extends Integer> {
private T n;
public NaturalNumber(T n) { this.n = n; }
public boolean isEven() {
// intValue is methods defined in the bounds
return n.intValue() % 2 == 0;
}
// ...
}