Java方法重载选择

时间:2013-10-10 13:10:36

标签: java

我在课堂上有两种方法......

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[])时,调用该方法的第一个版本。

我可以给出任何注释或“提示”以确保我预期被调用的方法会被调用吗?我知道Object[]Object,但我希望在运行时Object[]之前调用Object的方法。

2 个答案:

答案 0 :(得分:8)

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

如果你想让一个人被调用,那么你给出的提示通常是对方法所期望的确切参数类型的强制转换(这个强制转换甚至可以在null上工作。因此,使用(Object)arr将强制调用第一个方法,但默认情况下它肯定会调用第二个方法(无论如何都在JVM的所有正确版本上) - 与流行的看法相反,这种情况在JLS中明确涵盖因此并不含糊。)

答案 1 :(得分:0)

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