我的课程结构如下:
void add(String s){
System.out.println("string");
}
void add(Object s){
System.out.println("object");
}
public static void main(String[] args) {
new MyClazz().add(null);
}
O / P:string
为什么不调用对象?
答案 0 :(得分:2)
String
比Object
更具体。因此,void add(String s)
优先于void add(Object s)
。
15.12.2. Compile-Time Step 2: Determine Method Signature
第二步搜索上一步中确定的类型 成员方法。此步骤使用方法的名称和参数 表达式,用于查找既可访问又适用的方法, 也就是说,可以在给定的上正确调用的声明 参数。
可能有多种这样的方法,在这种情况下最多 选择特定的一个。 描述符(签名加返回类型) 最具体的方法是在运行时用于执行的方法 方法调度。