方法参数中的空值
Null value in method parameter
我有以下代码
import java.util.List;
public class Sample {
public static void main(String[] args) {
test(null);
}
static void test(List<Object> a){
System.out.println("List of Object");
}
static void test(Object a){
System.out.println("Object");
}
}
我在控制台中得到以下输出
List of Object
为什么不调用 test(Object a)
?有人能解释一下 "List as" null
是怎么回事吗?
简而言之,选择了重载中最具体的方法。
在这种情况下,最具体的方法是采用 List<Object>
的方法,因为它是 Object
的子类型。
Java 用于选择重载方法的确切算法非常复杂。有关详细信息,请参阅 Java Language Specification section 15.12.2.5。
总是首先具体,在这种情况下。如果将 List 更改为 String,它会打印相同的内容。每个 class 都是 Object 的子对象,所以如果它必须重载,将是更具体的 class.
我有以下代码
import java.util.List;
public class Sample {
public static void main(String[] args) {
test(null);
}
static void test(List<Object> a){
System.out.println("List of Object");
}
static void test(Object a){
System.out.println("Object");
}
}
我在控制台中得到以下输出
List of Object
为什么不调用 test(Object a)
?有人能解释一下 "List as" null
是怎么回事吗?
简而言之,选择了重载中最具体的方法。
在这种情况下,最具体的方法是采用 List<Object>
的方法,因为它是 Object
的子类型。
Java 用于选择重载方法的确切算法非常复杂。有关详细信息,请参阅 Java Language Specification section 15.12.2.5。
总是首先具体,在这种情况下。如果将 List 更改为 String,它会打印相同的内容。每个 class 都是 Object 的子对象,所以如果它必须重载,将是更具体的 class.