// 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 );