Tôi đã gặp câu hỏi này trong một bài kiểm tra,
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);
}
}
Đầu ra của chương trình này là "Phiên bản chuỗi". Nhưng tôi không thể hiểu tại sao việc truyền null cho một phương thức được nạp chồng lại chọn phiên bản chuỗi. Giá trị null có phải là một biến Chuỗi trỏ tới không?
Tuy nhiên, khi mã được thay đổi thành,
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);
}
}
nó đưa ra lỗi biên dịch nói rằng "Phương thức method (StringBuffer) không rõ ràng đối với loại MoneyCalc"