extends: List<? extends Number> foo3 = new ArrayList(); // Number "extends" Number (in this context) List<? extends Number> foo3 = new ArrayList(); // Integer extends Number List<? extends Number> foo3 = new ArrayList(); // Double extends Number super: List<? super Integer> foo3 = new ArrayList(); // Integer is a "superclass" of Integer (in this context) List<? super Integer> foo3 = new ArrayList(); // Number is a superclass of Integer List<? super Integer> foo3 = new ArrayList(); // Object is a superclass of Integer Producer Extends, Consumer Super.