lst; Object[] o = lst;"?-6ren"> lst; Object[] o = lst;"?-public class VarargsParamVsLocalVariable { static void f(List... stringLists) { // compi-6ren">
gpt4 book ai didi

java - 如果 List 是可变参数,为什么它编译 "List lst; Object[] o = lst;"?

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:54 25 4
gpt4 key购买 nike

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 变量是可变参数,为什么我可以将 List 变量分配给 Object[] 变量?

最佳答案

因为 Varargs 比如 List<String>... stringLists在某种程度上相当于一个数组,如List<String>[] stringLists .

为了让你的代码编译你应该创建一个array如下:

Object[] array1 = {stringLists1};

对于 stringLists ,你需要先初始化它,否则即使你尝试像上面那样创建一个数组,它也不会编译。

同理public static void main(String[] args) {可以重写:

public static void main(String... args) {

关于java - 如果 List<String> 是可变参数,为什么它编译 "List<String> lst; Object[] o = lst;"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com