我有以下代码:
public class Main {
public void method(Object o)
{
System.out.println("Object Version");
}
public void method(String s)
{
System.out.println("String Version");
}
public static void main(String args[])
{
Main question = new Main();
question.method(null);//1
}
}
为什么结果是“String Version”?如果第一个方法接受一个 StringBuffer
对象,为什么会出现编译器错误?另一种情况:如果第一个方法接受一个 StringBuffer
对象,并且我写成 question.method("word");
,结果将是“String Version”。为什么?为什么没有编译器错误?
String
更具体)改变了情况,这是JLS中的一个案例吗?不过StringBuffer
的情况很容易,因为它肯定是模棱两可的。 - Donal Fellows