Why does it compile "List <String> lst; Object [] o = lst;" if List <String> is varargs?
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?
Why can I assign the List variable to the Object [] variable if the List variable is a vararg parameter?
+4
6 answers
Since Varargs is List<String>... stringListssomehow equivalent to an arrayfor example List<String>[] stringLists.
To compile your code, you must create arrayas follows:
Object[] array1 = {stringLists1};
For stringListsyou will need to initialize it first, otherwise even if you try to create an array as described above, it will not compile.
public static void main(String[] args) { :
public static void main(String... args) {
+4