当我执行下面的代码时,我得到以下输出:
调用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)
我试过这个:
测试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)
| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |