1  import java.util.ArrayList;
  2  
  3  public class WildcardDemo
  4  {
  5     public static <E> void addAll(ArrayList<E> lst, ArrayList<? extends E> other)
  6     // public static <E> void addAll(ArrayList<E> lst, ArrayList<E> other)
  7     // doesn't work with Student array list
  8     {
  9        for (E e : other)
 10        {
 11           lst.add(e);
 12        }
 13     }
 14  
 15     public static <E extends Comparable<? super E>> E max(ArrayList<E> a)
 16     // public static <E extends Comparable<E>> E max(ArrayList<E> a) 
 17     // doesn't work with Student array list
 18     {
 19        E largest = a.get(0);
 20        for (int i = 1; i < a.size(); i++)
 21        {
 22           if (a.get(i).compareTo(largest) > 0) 
 23           {
 24              largest = a.get(i);
 25           }
 26        }
 27        return largest;
 28     }
 29  
 30     public static void main(String[] args)
 31     {
 32        ArrayList<Student> students = new ArrayList<Student>();
 33        students.add(new Student("Fred", "CS"));
 34        students.add(new Student("Ann", "Bio"));
 35        students.add(new Student("Sue", "CS"));
 36  
 37        ArrayList<Person> people =  new ArrayList<Person>();
 38        people.add(new Person("Harry"));
 39  
 40        addAll(people, students);
 41        System.out.println(people);
 42  
 43        System.out.println(max(students));      
 44     }
 45  }