public class VarargsParamVsLocalVariable {
static void f(List<String>... stringLists) {
// compiles fine! No problems in Runtime as well.
Object[] array = stringLists;
}
//but the same fails if List<String> is not a vararg parameter
public static void main(String[] args) {
List<String> stringLists;
List<String> stringLists1 = new ArrayList<>();
//below lines give: "cannot convert from List<String> to Object[]"
Object[] array = stringLists; // compile error!
Object[] array1 = stringLists1; // compile error!
}
}
// Why I can assign List<String> variable to Object[] variable if List<String> variable is a vararg parameter?
如果List变量是vararg参数,为什么可以将List变量分配给Object []变量?
最佳答案
因为像List<String>... stringLists
这样的 Varargs 在某种程度上等效于像List<String>[] stringLists
这样的数组。
为了使您的代码编译,您应该创建一个array
,如下所示:
Object[] array1 = {stringLists1};
对于
stringLists
,您将需要首先对其进行初始化,否则即使您尝试如上所述创建一个数组也无法编译。出于相同的原因,可以重写
public static void main(String[] args) {
:public static void main(String... args) {