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)
,但为什么呢?
我很感激你的帮助。
答案 0 :(得分:6)
testFunc(String s)
因为运行时将选择具有最具体参数的testFunc
变体。 testFunc(String s)
比testFunc(Object o)
更具体,因为String
是Object
的子类型。
仔细阅读section 15.12.2.5 of the JLS以获取明确的详细信息。