testVargArgsAutoboxingPriority の最初の呼び出しのコンパイルが失敗する理由を理解するのを手伝ってくれませんか?
2 番目の呼び出しの場合、コンパイラはオブジェクトよりもプリミティブ (最初のパラメータ) を優先することで適切なメソッドを選択できますが、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 )
{}
}