将参数传递给重载函数的一些问题

时间:2018-09-07 13:26:09

标签: java arguments overloading

package java_coding;

public class String_Null {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    String_Null string_Null = new String_Null();
    string_Null.method(null);
}

public void method(String string) {
    System.out.println("String");
}

public void method( Object object) {

    System.out.println("Object");
}


}

结果是字符串。解释为什么?

1 个答案:

答案 0 :(得分:2)

由于选择了最具体的方法,所以最具体的是String(与Object相比)。这是JLS顺便说一句...我稍后将进行深入探讨。

根据JLS

  

如果有多个成员方法可以访问并且适用于方法调用,则必须选择一个成员方法来为运行时方法分派提供描述符。 Java编程语言使用选择最具体方法的规则。

     

非正式的直觉是,如果第一种方法处理的任何调用都可以传递给另一个方法而没有编译时错误,则一个方法比另一种方法更具体。