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)难道不算吗?
事实上上面的代码是正确的,编译也不会报错.欢迎大家讨论.
public Integer copyFactory(Integer source){
return new Integer(source.intValue());
} public Object copyFactory(Object source) throws Exception{
throw new Exception("error");
}}上面的代码是正确的,但是我有点疑惑,书中提到的"或者找到了多个参数类型在转换后能够匹配的方法,那么编译器会报告错误",这种情况指的是哪种情况?上面的例子中(Integer 转换为Object)难道不算吗?
事实上上面的代码是正确的,编译也不会报错.欢迎大家讨论.
首先,我看过英文版本,翻译过来就是书中翻译的意思(比较简单,不是什么高深莫测的语句)
其次,照他说的这个情况,就是我上面举的那个例子(事实上,我举的那个例子调试是正确的,
也确实可以那么用),我相信作者应该指的不是(
public Object copyFactory(Object source);
public Object copyFactory(Object source);就是一个方法不小心写了两遍,这显然是
不正确的)。
最后,我也不知道他想表达什么,只能认为是他错了。