Java - Bounded Type Parameters


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]>


  • B1 to Bn are class or interface that defined the bounds
  • B2 to Bn are optional
  • extends defined upper bounds
  • super define lower bounds

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;

    // ...

Documentation / Reference

Powered by ComboStrap