Почему я не могу создать новый массив Java?

Почему первый работает, а второй не работает?

1) OK

String[] foo = {"foo"};
bar.setArray(foo);

2) BAD

bar.setArray({"foo"});

Есть ли быстрый способ создать строку [] в одной строке?

Ответ 1

bar.setArray(new String[] { "foo" });

Я считаю, что этот формат требуется, потому что Java не хочет подразумевать тип массива. С форматом инициализации массива тип явно определяется назначенным типом переменной. Inline, тип массива не может быть выведен.

Ответ 2

Как говорили другие:

bar.setArray(new String[] {"foo"});

В J2SE 5.0 планировалось избавиться от new String[], но вместо этого у нас есть varargs. С помощью varargs вы можете слегка изменить объявление setArray для использования ... вместо [] и вывести new String[] { }.

public final class Bar {
    public void setArray(String... array) {
    [...]
}

[...]
    bar.setArray("foo"); 

Ответ 3

Вы должны использовать это:

bar.setArray(новая строка [] { "foo" });

Ответ 4

К сожалению, наиболее близким к тому, что Java подходит для встроенных массивов, является new String[]{"foo", "bar"}, однако есть опрятный трюк, который позволяет вам делать что-то вроде

array("foo", "bar") с автоматически определяемым типом.

Я работал над полезным API для расширения языка Java, чтобы разрешать встроенные массивы и типы коллекций. Для получения дополнительной информации google project Espresso4J или ознакомьтесь с ней здесь