日期:2014-05-20  浏览次数:20710 次

方法重载时参数传递 Null,求高人指点
代码如下

Java code

public class TT {
       public void myMethod(Object o) { 
           System.out.println("My Object"); 
       }
       public void myMethod(String s) { 
           System.out.println("My String"); 
       }
       
       public static void main(String args[]) { 
           TT t = new TT(); 
           t.myMethod(null); 
       }
}



输出结果是:My String  

求高人解释

------解决方案--------------------
Java code


int l=null;
String a=null;
和这个原理是一样的 定义int类型的变量为其赋值null 报错 并不能转型为int
String 毫无压力 
具体原理坐等

------解决方案--------------------
《java解惑》上有说明

会找能匹配的最精确的类型
------解决方案--------------------
Java code
public class TT {
    public void myMethod(Parent o) {
        System.out.println("My Object");
    }

    public void myMethod(Child s) {
        System.out.println("My String");
    }
    /*public void myMethod(String s) {
        System.out.println("My String");
    }*/

    public static void main(String args[]) {
        TT t = new TT();
        //String s = null;
        t.myMethod(null);
    }
}

class Child extends Parent{
    
}
class Parent{
    
}