Ответ 1
String[] s = {"FOO", "BAR"};
это разрешено только во время объявления
Вы не можете
String[] s;
s={"FOO", "BAR"};
В Java полностью законно инициализировать массив String следующим образом:
String[] s = {"FOO", "BAR"};
Однако при попытке создать экземпляр класса, который принимает массив String в качестве параметра, следующий фрагмент кода НЕ допускается:
Test t = new Test({"test"});
Но это снова работает:
Test t = new Test(new String[] {"test"});
Может кто-нибудь объяснить, почему это?
String[] s = {"FOO", "BAR"};
это разрешено только во время объявления
Вы не можете
String[] s;
s={"FOO", "BAR"};
Потому что Type[] x = { ... }
является синтаксисом инициализации для массивов. { ... }
интерпретируется определенным образом только в этом конкретном контексте.
Если вам нужен простой способ передать массив String, я предлагаю вам использовать varargs
class Test {
public Test(String...args);
}
// same as new Test(new String[] { "test", "one" })
Test t = new Test("test", "one");