Consider the following:
 public class GenericTest {
    static void print(int x) {
        System.out.println("Int: " + x);
    }
    static void print(String x) {
        System.out.println("String: " + x);
    }
    static void print(Object x) {
        System.out.println("Object: " + x);
    }
    static <T> void printWithClass(T t) {
        print(t);
    }
    public static void main(String argsp[]) {
        printWithClass("abc");
    }
}
It prints Object: abc. Why doesn't it print String: abc?
 
     
     
     
     
     
     
     
     
    