Java 类型转换和方法重载

Java 类型转换和方法重载,java,type-conversion,overloading,Java,Type Conversion,Overloading,这是示例代码: public class OverloadingExample { public void display(Object obj){ System.out.println("Inside object"); } public void display(Double doub){ System.out.println("Inside double"); } public static void main(String args[]){ new Overl

这是示例代码:

public class OverloadingExample {
public void display(Object obj){
    System.out.println("Inside object");
}

public void display(Double doub){
    System.out.println("Inside double");
}

public static void main(String args[]){
    new OverloadingExample().display(null);
}
}
输出:

内翻


有人能解释一下为什么调用带有
Double
参数的重载方法而不是调用带有
Object
的重载方法吗?

是-因为
Double
Object
更具体。有一个从
Double
Object
的转换,但不是相反,这使它更具体

有关更多信息,请参阅JLS的第页。细节很难理解,但这有助于:

非正式的直觉是,如果第一个方法处理的任何调用都可以传递给另一个方法,而不会出现编译时类型错误,那么一个方法比另一个方法更具体


因此,在这里,
display(Double doub)
的任何调用都可以通过
display(Object obj)
来处理,但不能反过来处理。

谢谢。“非正式的直觉是,如果第一个方法处理的任何调用都可以传递到另一个方法,而不会出现编译时类型错误,那么一个方法比另一个方法更具体。”@noob:Yup,我只是添加了那个位:)