// using static generics

/**
  * Sorts an ArrayList in order according to a Comparator.
  * @param E generic type E is used to define that a typed ArrayList must be passed
  * as a parameter and how the Comparator has to match up.
  * @param a typed ArrayList
  * @param c a Comparator suitable for comparing objects in the ArrayList,
  * For ArrayList<String> a String or Object Comparator would do.
  */
static <E> void sort ( ArrayList<E> a, Comparator<? super E> c )
   {
   /* ... */

   }

// method invocatation, no sign of angle brackets anywhere.
sort( myStrings, String.CASE_INSENSITIVE_ORDER );