动态绑定
core java I(6e)p148中的一段话,不甚明白,请教,如下:
2)编译器检查方法调用中提供的参数类型.如果在所有名为f的方法中有一个的参数类型同调用提供的参数类型最为匹配,那么就选择调用这个方法,这个过程称为"重载解析".例如:对调用x.f("hello"),编译器会挑选f(string),而不是f(int).由于存在类型转换(int转成double,等等),情况会变得负责.如果编译器无法找到任何同参数类型匹配的方法,或者找到了多个参数类型在转换后能够匹配的方法,那么编译器会报告错误.
事例:
public class Test{
public Integer copyFactory(Integer source){
return new Integer(source.intValue());
}
public Object copyFactory(Object source) throws Exception{
throw new Exception("error");
}
}
上面的代码是正确的,但是我有点疑惑,书中提到的"或者找到了多个参数类型在转换后能够匹配的方法,那么编译器会报告错误",这种情况指的是哪种情况?上面的例子中(Integer 转换为Object)难道不算吗?
事实上上面的代码是正确的,编译也不会报错.
欢迎大家讨论.