When using a bounded wild card we can limit the parametric type as if we were saying that it can be any type as long as it extends or implements a specific type we specify.
package il.ac.hit.samples; import java.util.Iterator; import java.util.Vector; public class BoundedWildCardSample { public static double calculateTotal(Vector<? extends Shape> vicy) { double sum = 0; Iterator<? extends Shape> iterator = vicy.iterator(); while (iterator.hasNext()) { sum += iterator.next().area(); } return sum; } public static void main(String args[]) { double total = 0; Vector<Circle> victor = new Vector<Circle>(); victor.add(new Circle(4)); victor.add(new Circle(8)); victor.add(new Circle(2)); // victor.add(new Rectangle(4,2)); // victor.add(new Rectangle(5,4)); total = calculateTotal(victor); System.out.println("total=" + total); } }
The following video clip shows how to use bounded wild cards and provides more in-depth explanation.