是方法重载的问题, 由编译器在编译时期进行方法选择, 一般会选择同类型或者最匹配的类型进行调用.
null可以匹配任何对象, 上面两个方法都可以匹配, 这时编译器会选择更加特殊的(specific)那个, 这里就是int[] nums了, Object是所有类的父类.子类都比父类更加匹配null!如果你再加上一个重载方法- private static void invoke(String nums) {
- System.out.println("String");
- }
复制代码 这时候编译期就会报错,编译器这时无法选择int[]还是String来进行匹配. |