This question already has answers here:
Which overload will get selected for null in Java?
                                
                                    (3个答案)
                                
                        
                5年前关闭。
            
        

我想知道这是否是有效的重载:

public class OverLoadingTest{

     private void callFunction(Object object){
              System.out.println("Printing Object");
     }

     private void callFunction(String string){
              System.out.println("Printing String");
     }

}


再者,因为有人问我这个问题。
如果我这样

OverLoadingTest test = new OverLoadingTest();
test.callFunction(null);


将打印什么?

我当然认为这根本不是有效的重载。
因此,第二部分毫无疑问。

请通过一些解释告诉我。

最佳答案

具有最少通用参数的方法将被调用。因此,在您的情况下,将是接受String的方法

注意:如果2个类处于同一级别,那么您将得到一个模糊的调用异常。例如,如果一种方法采用String,而另一种方法采用Exception

09-12 02:24