List<?extendsNumber> foo3 &#61;newArrayList<Number>();// Number "extends" Number (in this context) List<?extendsNumber> foo3 &#61;newArrayList<Integer>();// Integer extends Number List<?extendsNumber> foo3 &#61;newArrayList<Double>();// Double extends Number
List<?super Integer> foo3 &#61;newArrayList<Integer>();// Integer is a "superclass" of Integer (in this context) List<?super Integer> foo3 &#61;newArrayList<Number>();// Number is a superclass of Integer List<?super Integer> foo3 &#61;newArrayList<Object>();// Object is a superclass of Integer