Java方法重载选择

Java方法重载选择,java,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”,“

我在一个类中有两个方法

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[])
时,调用了该方法的第一个化身


我是否可以提供任何注释或“提示”来确保预期调用的方法将被调用?我知道
对象[]
对象
,但我希望在运行时在
对象
之前调用
对象
的方法

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


如果您希望调用一个方法而不是另一个方法,那么您给出的提示通常是对该方法所期望的确切参数类型进行强制转换(此强制转换即使在
null
上也有效),因此使用
(Object)arr
将强制调用第一个方法,但默认情况下它肯定会调用第二个方法(无论如何,在所有正确版本的JVM上——与流行的观点相反,JLS中明确地介绍了这种情况,因此并不含糊。)

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

不应该发生。传递
对象[]
将调用第二个方法。我无法重现您的问题。如果我使用
对象类型的引用,我将调用方法的第一个版本。如果我使用
对象[]
reference第二个方法将被调用。删除第一个方法,并在使用第一个方法的情况下传递一个包含一个元素的数组。您始终可以将第三个参数强制转换为
Object[]
@ElGuapo。再次,我得到了预期的行为,即使用
Object[]的方法
在传入字符串数组时被调用…对我来说很有用。事实上,它必须根据语言规范调用第二个方法。它还提供了一个很好的方法选择解释。我也没有遇到过这种情况。