Getting compiler error while using array constants in the constructor Getting compiler error while using array constants in the constructor arrays arrays

Getting compiler error while using array constants in the constructor


This will do what you're looking for:

public Sonnet29() {    poem = new String[] { "foo", "bar", "baz" };}

Initialization lists are only allowed when creating a new instance of the array.


From the Java language specification:

An array initializer may be specified in a declaration, or as part of an array creation expression (ยง15.10), creating an array and providing some initial values

In short, this is legal code:

private int[] values1 = new int[]{1,2,3,4};private int[] values2 = {1,2,3,4}; // short form is allowed only (!) hereprivate String[][] map1 = new String[][]{{"1","one"},{"2","two"}};private String[][] map2 = {{"1","one"},{"2","two"}}; // short formList<String> list = Arrays.asList(new String[]{"cat","dog","mouse"});

and this is illegal:

private int[] values = new int[4];values = {1,2,3,4}; // not an array initializer -> compile errorList<String> list = Arrays.asList({"cat","dog","mouse"}); // 'short' form not allowed


{"cat", "dog"}

Is not an array, it is an array initializer.

new String[]{"cat", "dog"}

This can be seen as an array 'constructor' with two arguments. The short form is just there to reduce RSI.

They could have given real meaning to {"cat", "dog"}, so you could say things like

{"cat", "dog"}.length

But why should they make the compiler even harder to write, without adding anything useful? (ZoogieZork answer can be used easily)