实际问题: 如果它调用(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)?
它将调用(1),因为方法解析算法优先考虑不使用varargs的方法.
要强制它使用(2),您可以传递数组或将第一个参数强制转换为Object:
myMethod(new Object[] { "name", new MyClass() });
//or
myMethod((Object) "name", new MyClass());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |