出于好奇,我尝试了这个示例。
public class Class1 {
public void method(Object obj){
System.out.println("Object");
}
public void method(String str){
System.out.println("String");
}
public static void main(String... arg){
new Class1().method(null);
}
}
输出为“字符串”。我想知道JVM在什么基础上决定调用将String作为参数而不是Object的方法。
最佳答案
只要可以将多个重载方法应用于参数列表,就会使用最具体的方法。
在这种情况下,可以在传递 null
时调用任何一种方法,因为“null 类型”可以分配给 Object
和 String
。采用 String
的方法更具体,因此会被选中。
关于JAVA 对象/字符串方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17669804/