public class Test3 { /**
 * @param args
 */
public void run(Object obj){
System.out.println("this is object");
}
public void run(String str){
System.out.println("this is string");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test3 test3=new Test3();
test3.run(null); }}
这个结果为什么打印的是 this is string

解决方案 »

  1.   

    首先这个是重载造成的一种现象,而且null本身的不确定性更容易让人迷惑不解。其实这个是java重载的精确性问题,因为Object的范围显然较String大,所以从精确性来讲,String更符合当前的需要。
      

  2.   

    当null 符合 Object和String时
    String 更精确,范围更小,更符合。
      

  3.   

    String extends Object
    null can be String or Object
    so use String 
      

  4.   

    可以参阅我写的一篇文章,希望对你有帮助
    http://blog.csdn.net/chaijunkun/article/details/7660178
      

  5.   

    java重载按照最近原则进行调用
      

  6.   

    String 类型 默认的 就是null ,智商啊