I'm confused in below examples. some one can please explain me why in Example 1 it will print "st" and in Example 2 give compile time ambiguity for non primitive types and non parent-child relations classes.
Example 1
public class FinalTest {
public static void main(String[] args) {
name(null);
}
public static void name(String s) {
System.out.println("st");
}
public static void name(Object s) {
System.out.println("obj");
}
}
Example 2
public class FinalTest {
public static void main(String[] args) {
name(null);
}
public static void name(String s) {
System.out.println("st");
}
public static void name(Integer s) {
System.out.println("obj");
}
}