public class Test{
public static void m1(Object o){
System.out.println("object called");
}
public static void m1(String s){
System.out.println("String called");
}
}
现在,这里是下面的情况下,爪哇:使参数相同的方法签名以外的参数类型
- M1( “串”); 输出:字符串
- m1(new String(“string”)); 输出:字符串调用
- Object o =“string”; m1(o); 输出:名为 的对象
- Object o = new String(“string”); m1(o); 输出:名为 的对象
- Object o = new Object(); m1(o); 输出:对象叫做
有人能解释一下上面的场景吗?
你的每个变量'o'被定义为'Object',因此它调用'm1(Object)'。用'String'调用同样的情况。 – SomeJavaGuy
'Object o =“string”'执行类型擦除,你迫使'String'被认为是一个通用的'Object'。将'o'传递给'm1()'使用对象版本,因为这是变量'o'的类型。 –