例如,我们有一个类Test
,它使用参数重载2个方法(只是称之为 ambiguousMethod ):1方法有short,另一个有int,但是不同类型< / strong>即可。在这种情况下,请考虑该类型短和 int 。然后我从main那样调用这个方法:
double d = new Test.ambiguousMethod(3);
那么将调用哪种方法?使用INT还是SHORT返回类型?
由于
这是我的代码:
Method a = new Method();
double d= a.print(3);
class Method {
public int print(int a)
{
return a;
}
public short print(short b){
return b;
}
}
答案 0 :(得分:12)
两者都不会被调用,因为该程序无法编译。无论返回类型如何,两个带有参数的同名方法都具有相同的方法签名,这是Java中的编译器错误。
注意:当问题表明两个同名方法没有参数和不同的返回类型时,给出了上面的答案。它已经变成了不同的东西。
对于“更新”问题:
您传递了int
文字3
,因此将调用int
方法。要调用short
方法,请将3
投射到short
:
ambiguousMethod((short) 3);
答案 1 :(得分:1)
如果您传入文字3
,则会调用带有int
参数的方法,因为当没有其他预期类型时,3
会隐式输入为int
表示(与short s = 3
的情况不同)。
答案 2 :(得分:0)
整数文字的默认类型是int,因此应该调用该版本。如果你想用文字调用另一个版本,请将其强制转换。
答案 3 :(得分:0)
将调用带有int
参数的方法,因为数字文字值在Java中具有默认类型int
。
如果您明确地它到short
,那么它将使用short
参数调用方法。
ambiguousMethod((short)3); //will call method with short args.