Java 对象vararg和int vararg编译错误

Java 对象vararg和int vararg编译错误,java,variadic-functions,Java,Variadic Functions,为什么下面的代码给出编译错误“对于VarArgs类型,方法show(Object[])不明确” 线显示错误(10,20,30) JDK:jdk1.6.0_23您应该首先读取并传递一个int数组,而不是show方法中的3个int 这里发生的是Java编译器自动将int装箱到Integer类,由于Integer类是对象类的一个子类,show()方法的两个版本都可以接受show(int[]),因此编译器抛出了不明确的错误。谢谢Tunaki。不确定它是否重复,因为int vaarg和Integer va

为什么下面的代码给出编译错误“对于VarArgs类型,方法show(Object[])不明确”

线显示错误(10,20,30)

JDK:jdk1.6.0_23

您应该首先读取并传递一个int数组,而不是show方法中的3个int


这里发生的是Java编译器自动将int装箱到Integer类,由于Integer类是对象类的一个子类,show()方法的两个版本都可以接受show(int[]),因此编译器抛出了不明确的错误。

谢谢Tunaki。不确定它是否重复,因为int vaarg和Integer vaarg存在重载。演出(10,20,30)时,为什么会出现混乱?。另一方面,私有静态void show(Integer…arry)有效。show(int[])不能接受show(10,20,30)。另外,如果我将第二个方法更改为private static void show(Integer…arry),它也可以工作。我想您误解了,show(int[])是指使用int数组作为参数调用show方法。对于vararg,show(10,20,30)是传递的数组,对吗?。我认为,第二个方法被装箱为Integer,然后扩展为Object。不过我不确定。
public class VarArgs {
    public static void main(String[] args) {
        show(10,20,30);
    }

    private static void show(Object... args){
        System.out.println("Object");
    }

    private static void show(int... arry){
        System.out.println("Integer");
    }
}