为什么这段代码没有给出编译错误?

时间:2014-10-05 18:22:58

标签: java compiler-errors

Java使用早期绑定来确定调用哪个方法,但我的问题是如何确定它应该调用

  

private static void confuse(RuntimeException对象)

不是其他两种方法?

/**
 * @param args
 */
public static final void main(String[] args) {
    confuse(null);
}

private static void confuse(Object object) {
    System.out.println("object");

}

private static void confuse(RuntimeException object) {
    System.out.println("RuntimeException ");

}
private static void confuse(Exception object) {
    System.out.println("Exception ");

}

如果我使用null调用confuse,它应该给出编译错误,因为null可以是所有三个类的值。请解释输出。

0 个答案:

没有答案