重载方法选择的困境

时间:2011-10-13 18:29:57

标签: java

public void testFunc(Object o) {
     System.out.println("testFunc-Object");
}

public void testFunc(String s) {
     System.out.println("testFunc-String");
}

这两种方法都在测试类中。如果我从测试类的main方法调用以下方法,将调用哪个方法?

Test t = new Test();
t.testFunc(null);

在这种特殊情况下,会调用testFunc(String),但为什么呢? 我很感激你的帮助。

1 个答案:

答案 0 :(得分:6)

调用

testFunc(String s)因为运行时将选择具有最具体参数的testFunc变体。 testFunc(String s)testFunc(Object o)更具体,因为StringObject的子类型。

仔细阅读section 15.12.2.5 of the JLS以获取明确的详细信息。