Java重载概念

Dee*_*pak 6 java overloading

当我运行此代码时,它会打印出来String.我的问题是为什么没有编译时错误?Object的默认值以及String为null.然后为什么不编译说Reference to method1 is ambiguous.

public class Test11
{

   public static void method1(Object obj) {
      System.out.println("Object");
   }

   public static void method1(String str) {
      System.out.println("String");
   }

   public static void main(String[] arr ) {
      method1(null);    
   }
}
Run Code Online (Sandbox Code Playgroud)

Per*_*ror 0

一句话说得好

在重载方法的情况下,编译器会选择具有最具体类型的方法,因为 String 是最具体的对象类型,编译器将调用以字符串作为参数的方法