如果我试图重载方法flexiPrint()
的一类Varargdemo
然后它产生一个编译时间错误。 该编译器将下面的签名是相同的:
public static void flexiPrint(Object... data){}
public static void flexiPrint(Object[] data){}
为什么他们都一视同仁,以我有人能解释一下吗? 我一直没能找到答案。
如果我试图重载方法flexiPrint()
的一类Varargdemo
然后它产生一个编译时间错误。 该编译器将下面的签名是相同的:
public static void flexiPrint(Object... data){}
public static void flexiPrint(Object[] data){}
为什么他们都一视同仁,以我有人能解释一下吗? 我一直没能找到答案。
Object...
只不过它是一个数组,这意味着相同的定义Object[]
...
(三个点)表示可变参数在Java中。
我们通常看到的主要方法,此签名像main(String... args)
所以,具有多于一个的方法用相同的签名不是在类允许(编译时间错误)。 这就是为什么你看到编译时错误。
它们是相同的“引擎盖下”。 可变参数(在...
)传递一个数组作为参数:
它仍然是真实的多参数必须在阵列中已过,但可变参数功能自动化和隐藏的进程。 此外,它与先前存在的API向上兼容。
您可以在文档中找到它这里 。
可变长度参数,如Object...
是语法糖。 当使用,例如:
flexiPrint("apple", "peach", "plum");
然后“苹果”,“桃”,“李子”实际上变成:`对象[] {“苹果”,“桃”,“李子”}。