0

例如,我们有一个类Test,它重载了 2 个带参数的方法(就叫它ambiguousMethod:1 个方法是 short,另一个是 int,但类型不同。在这种情况下,请考虑 type 是shortint。然后我像这样从 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;
    }

}
4

4 回答 4

12

两者都不会被调用,因为该程序不会编译。无论返回类型如何,两个不带参数的同名方法都具有相同的方法签名,这是 Java 中的编译器错误。

注意:当问题指出两个同名方法没有参数和不同的返回类型时,给出了上面的答案。从那以后,它变成了不同的东西。

对于“更新”的问题:

您传递了一个int文字3,因此int将调用该方法。要调用该short方法,请将3转换为 a short

ambiguousMethod((short) 3);
于 2013-10-30T17:00:25.857 回答
1

如果你传入一个字面量3,那么带有int参数的方法将被调用,因为当没有指示其他预期类型时3,它被隐式类型化(与 的情况不同)。intshort s = 3

于 2013-10-30T17:00:52.587 回答
0

将调用带有int参数的方法,因为数字文字值int在 Java 中具有默认类型。

如果您将其显式转换为,short那么它将调用带有short参数的方法。

ambiguousMethod((short)3); //will call method with short args.
于 2013-10-30T17:06:11.760 回答
0

整数文字的默认类型是 int,因此应该调用该版本。如果您想用文字调用另一个版本,请将其转换。

于 2013-10-30T17:04:03.520 回答