5

我在一个类中有两种方法...

public void method(String var1, String var2, Object var3) {
    //do stuff
}

public void method(String var1, String var2, Object[] var3) {
    //do stuff
}

当我进行以下调用时...调用obj.method("string", "string", obj)了正确的方法,但是,当我尝试调用obj.method("string", "string", obj[])该方法的第一个化身时。

我可以提供任何注释或“提示”以确保调用我预期被调用的方法吗?我知道 anObject[]是 an Object,但我希望在运行时Object[]调用 with 的方法 before Object

4

2 回答 2

8

不,对我来说,这按预期调用了第二种方法!

在您希望一个被调用的情况下,您给出的提示通常是转换为该方法期望的确切参数类型(这种转换甚至可以在 . 上工作null。)所以 using(Object)arr将强制第一个方法被调用,但默认情况下它肯定会调用第二种方法(无论如何,在所有正确版本的 JVM 上 - 与普遍的看法相反,这种情况在 JLS 中明确涵盖,因此并不模棱两可。)

于 2013-10-10T13:17:01.307 回答
0

在 Java 中,方法重载发生在编译期间。这意味着调用哪个方法是在程序编译期间决定的。请注意,这与方法覆盖不同。

于 2013-10-10T13:27:56.507 回答