方法重载 - Java

Jun*_*aid -8 java java-8

实际问题: 如果它调用(1)那么我怎样才能调用它(2)?

我有以下方法签名

public void myMethod(String myStr, MyClass myClass) {...} // (1)

public void myMethod(Object... objects) {...} // (2)
Run Code Online (Sandbox Code Playgroud)

我在某个地方打电话

myMethod(new String("name"), new MyClass());

将调用哪个重载方法?如果它调用(1)那么我怎么能这样调用它(2)

ass*_*ias 5

它将调用(1),因为方法解析算法优先考虑不使用varargs的方法.

要强制它使用(2),您可以传递数组或将第一个参数强制转换为Object:

myMethod(new Object[] { "name", new MyClass() });
//or
myMethod((Object) "name", new MyClass());
Run Code Online (Sandbox Code Playgroud)