7

Как объявить массив в одну строку?

5

У меня есть метод m(), который принимает массив строк в качестве аргумента. Есть ли способ объявить этот массив прямо в строке вызова метода? Например, вместо того чтобы писать:

String[] strs = {"blah", "hey", "yo"};
m(strs);

Могу ли я просто заменить это на одну строку, чтобы избежать объявления именованной переменной, которую я никогда не собираюсь использовать?

5 ответ(ов)

11

Вызов метода m с аргументом new String[]{"blah", "hey", "yo"} создает новый массив строк, содержащий элементы "blah", "hey" и "yo". Этот массив передается в метод m. Если у вас есть конкретные вопросы о методе или его реализации, пожалуйста, уточните!

0

Вы можете создать метод, который принимает переменное количество аргументов и возвращает массив. Например:

public static <T> T[] toArray(T... ts) {
    return ts;
}

После этого вы сможете использовать этот метод следующим образом:

m(toArray("blah", "hey", "yo"));

Это придаст вашему коду более аккуратный вид.

0

В современном Java вы можете напрямую записывать массив, без инициализатора. Ваш пример теперь допустим. Обычно лучше давать параметры имена, но можно использовать и такой подход:

String[] array = {"blah", "hey", "yo"};

или

int[] array = {1, 2, 3};

Если вам необходимо использовать массив в инлайн-выражении, вам нужно будет явно указать тип:

functionCall(new String[]{"blah", "hey", "yo"});

Либо используйте varargs (переменное количество аргументов):

void functionCall(String... stringArray) {
    // Это будет массивом String[], содержащим любое количество элементов или пустым
}

functionCall("blah", "hey", "yo");

Надеемся, разработчики Java в будущем позволят неявную инициализацию массивов.

Обновление: Ответ для Kotlin

Kotlin значительно упростил работу с массивами! Для большинства типов просто используйте arrayOf, и он автоматически определит тип. Не передавайте ничего, чтобы оставить массив пустым.

arrayOf("1", "2", "3") // String
arrayOf(1, 2, 3)       // Int
arrayOf(1, 2, "foo")   // Any 
arrayOf<Int>(1, 2, 3)  // Явное указание типа
arrayOf<String>()      // Пустой массив строк

Для примитивов существуют утилитарные функции. Не передавайте ничего, чтобы оставить их пустыми:

intArrayOf(1, 2, 3)
charArrayOf()
booleanArrayOf()
longArrayOf()
shortArrayOf()
byteArrayOf()

Если у вас уже есть Collection и вы хотите преобразовать его в массив, используйте:

collection.toTypedArray()

Если вам нужно привести массив к другому типу, используйте:

array.toIntArray()
array.toLongArray()
array.toCharArray()
// и т.д.
0

Другой способ сделать это, если вы хотите получить результат в виде списка, можно сделать так:

Arrays.asList(new String[] { "String1", "string2" });
0

Другой вариант — использовать метод ArrayUtils.toArray из библиотеки org.apache.commons.lang3. Пример кода:

ArrayUtils.toArray("elem1", "elem2");

Этот метод позволяет создать массив из указанного количества элементов, что может быть удобно в различных случаях, когда вам нужно работа с массивами в Java. Если у вас есть дополнительные вопросы по использованию этой библиотеки, не стесняйтесь спрашивать!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь