29

In Java, it is completely legal to initialize a String array in the following way:

String[] s = {"FOO", "BAR"};

However, when trying to instantiate a class that takes a String array as a parameter, the following piece of code is NOT allowed:

Test t = new Test({"test"});

But this works again:

Test t = new Test(new String[] {"test"});

Can someone explain why this is?

0

3 Answers 3

45
String[] s = {"FOO", "BAR"};  

this is allowed at declaration time only

You can't

String[] s;
s={"FOO", "BAR"};  
Sign up to request clarification or add additional context in comments.

Comments

5

Because Type[] x = { ... } is an initialization syntax for arrays. The { ... } is interpreted in a specific way only in that specific context.

Comments

3

For you want a simple way to pass a String array, I suggest you use varargs

class Test {
   public Test(String...args);
}

// same as new Test(new String[] { "test", "one" })
Test t = new Test("test", "one"); 

2 Comments

Thanks, but that wasn't really the question and you are also assuming that we can modify the constructor.
@Herminator Usually you can, but not always. Next time you can you will know what you can do.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.