不知道
我只运行了这个
class test
{
private Object str = "";
public test()
{
} public void setStr(Object value)
{
this.str = value;
System.err.println("object ...."+value);
} public void setStr(String value)
{
this.str = value;
System.err.println("string ...."+value);
} public static void main(String[] args)
{
test t = new test();
t.setStr(null);
Object a = new Object();
t.setStr(a); 
}
}结果是
string ....null

解决方案 »

  1.   

    结果是 string....
    不知道为什么?有人能解释一下嘛
      

  2.   

    主要是解释这个t.setStr(null)执行哪个函数。
    当null和object与String进行匹配时,两者都能够使用。
    重载函数的原则是取最接近的函数进行使用,显然null
    更接近于String,虽然它也是一个对象。ok?
      

  3.   

    居然编译通过了?怪!!!!
    没有道理啊.....
    显然null更接近于String?????
    Why?如果我说 null 更接近一个对象,那你能怎么反驳我呢?
      

  4.   


    在main中加上:     Integer[] i=new Integer[3];
    t.setStr(i);结果有object ...本来object 就有tostring()的,所以本题应该只是考虑null的适用对象的问题,这是语言机制的问题,符合我们的习惯,比如说张三是人,当然他也是生物,可是我们在两者中,选择张三所满足的条件更多的一个分类我是这样理解的,赐教