public class Filter { //compile-time error: Object does not have compareTo //static T brokenMax(T t1, T t2) { // return (t1.compareTo(t2) <= 0 ? t2 : t1); //} static > T max(T t1, T t2) { return (t1.compareTo(t2) <= 0 ? t2 : t1); } public static void main(String[] args) { System.out.println(Filter.max(Integer.valueOf(6), Integer.valueOf(2))); System.out.println(Filter.max(Character.valueOf('e'), Character .valueOf('z'))); System.out.println(Filter.max("hello", "world")); System.out.println(Filter.max(new java.util.Date(232), new java.util.Date(2323434))); //Using autoboxing: System.out.println(Filter.max(6, 2)); System.out.println(Filter.max('e', 'z')); //compile-time errors (type mismatch) //System.out.println(Filter.max(3, 'f')); } }