代码如下:
static void test(Object obj) {
System.out.println("参数为 Object 类型");
}
static void test(ArrayList list) {
System.out.println("参数为 ArrayList 类型");
}
public static void main( String[] args ){
test(null);
}
实际测试的结果:参数为 ArrayList 类型
我知道泛型存在类型擦除,会将不明确类型转换为 Object 类型,那如果是这样应该都能匹配,编译器是报错的。实际上是编译通过,匹配的是泛型参数,希望大佬能解释下这个匹配结果的原因。
这跟泛型有啥关系?你这不就是个方法重载、传 null 究竟会解析哪个重载上的问题么?
自行百度
Java重载精确性原则
,老生常谈的问题了。