对象与字符串方法

Alp*_*iya 6 java

可能重复:
基于参数的实际类型
的重载方法选择当参数是文字空值时,如何选择重载方法?

当我执行下面的代码时,我得到以下输出:

调用String参数的方法......"

为什么?

public class StringObjectPOC {

    public static void test(Object o)   {
        System.out.println("Method with Object argument Called ...");
    }
    public static void test(String str){
        System.out.println("Method with String argument Called ...");
    }
    public static void main(String[] args) {
        StringObjectPOC.test(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

Rus*_*rez 2

我试过这个:

测试2.类

public class Test2{}
Run Code Online (Sandbox Code Playgroud)

测试3.类

public class Test3 extends Test2{

}
Run Code Online (Sandbox Code Playgroud)

测试类

public class Test{

public static void print(Object obj){
    System.out.println("Object");
}

public static void print(Test2 obj){
    System.out.println("test 2");
}

public static void print(Test3 obj){
    System.out.println("Test 3");
}


public static void main(String[]args){
    Test.print(null);
}

}
Run Code Online (Sandbox Code Playgroud)

它打印出测试 3

就像在您的场景中一样,这意味着如果一个方法被重载(并且当传递 null 时),它会识别具有child -most 参数的方法。

Object->Test->Test2
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下:

Object->String
Run Code Online (Sandbox Code Playgroud)