퀴즈에서이 질문을 보았습니다.
public class MoneyCalc {
public void method(Object o) {
System.out.println("Object Verion");
}
public void method(String s) {
System.out.println("String Version");
}
public static void main(String args[]) {
MoneyCalc question = new MoneyCalc();
question.method(null);
}
}
이 프로그램의 출력은 "String Version"입니다. 하지만 오버로드 된 메서드에 null을 전달하여 문자열 버전을 선택한 이유를 이해할 수 없었습니다. null은 아무것도 가리키는 문자열 변수입니까?
그러나 코드가 다음과 같이 변경되면
public class MoneyCalc {
public void method(StringBuffer sb) {
System.out.println("StringBuffer Verion");
}
public void method(String s) {
System.out.println("String Version");
}
public static void main(String args[]) {
MoneyCalc question = new MoneyCalc();
question.method(null);
}
}
"Method (StringBuffer) 메소드가 MoneyCalc 유형에 대해 모호합니다."라는 컴파일 오류를 제공합니다.