请你帮我理解为什么 testVargArgsAutoboxingPriority 的第一次调用的编译失败?
在第二次调用的情况下,编译器能够通过优先选择原始(第一个参数)而不是 Object 来选择正确的方法,但是在 varargs 参数添加之后编译器无法再进行选择。
失败消息是
\jdk1.6.0_45\bin\javac.exe ocjp6/AutoBoxingOldStyleVarargsPriority.java
ocjp6\AutoBoxingOldStyleVarargsPriority.java:7: reference to testVargArgsAutoboxingPriority is ambiguous, both method testVargArgsAutoboxing
Priority(java.lang.Integer,boolean...) in ocjp6.AutoBoxingOldStyleVarargsPriority and method testVargArgsAutoboxingPriority(int,boolean...)
in ocjp6.AutoBoxingOldStyleVarargsPriority match
testVargArgsAutoboxingPriority( 5, true ); // the line compilation fails
^
1 error
完整的代码清单是
package ocjp6;
public class AutoBoxingOldStyleVarargsPriority
{
public static void main( final String[] args )
{
testVargArgsAutoboxingPriority( 5, true ); // the line compilation fails
testVargArgsAutoboxingPriority( 5 );
}
private static void testVargArgsAutoboxingPriority( Integer b, boolean... c )
{}
private static void testVargArgsAutoboxingPriority( int b, boolean... c )
{}
private static void testVargArgsAutoboxingPriority( Integer b )
{}
private static void testVargArgsAutoboxingPriority( int b )
{}
}