Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > varargs to array


Автор: gelo86 18.1.2013, 17:49
Может знаете какой либ, в котором есть утилсы для конвертирования varargs в масив. Например чтото такого:
Код

public <T> T[] toArray(T... args) {
  return args;
}
String[] arr = toArray("1", "b", "c");


Или чтобы из collectiona'на перекинул в масив (чтобы ненадо было писать: coll.toArray(new Object[coll.size()]); ?

Автор: LSD 18.1.2013, 17:55
Цитата(gelo86 @  18.1.2013,  18:49 Найти цитируемый пост)
Например чтото такого:

Что мешает дописать еще пару методов самостоятельно?


Цитата(gelo86 @  18.1.2013,  18:49 Найти цитируемый пост)
Или чтобы из collectiona'на перекинул в масив (чтобы ненадо было писать: coll.toArray(new Object[coll.size()]); ? 

coll.toArray() сделает именно то, что код который ты написал.
Если же ты хочешь получит объект того же типа что и коллекция, то это немного затруднительно реализовать (хотя и возможно).

Автор: _Y_ 18.1.2013, 17:55
Цитата(gelo86 @  18.1.2013,  17:49 Найти цитируемый пост)
coll.toArray(new Object[coll.size()]); 

Пожалуй если Вы объясните чем плохо писать именно так, станет понятнее что нужно.

Автор: gelo86 18.1.2013, 19:34
В книге Effective JAVA написано, что ненадо писать код, если он уже написан. Просто интересно, сматрел в guava, apache-commons и не нашол. Сейчас у меня и есть руками написан либ, но думал может есть где уже гатовый код smile

Цитата(LSD @  18.1.2013,  17:55 Найти цитируемый пост)
Если же ты хочешь получит объект того же типа что и коллекция, то это немного затруднительно реализовать (хотя и возможно). 

Может кому пригодиться:
Код

    @SuppressWarnings("unchecked")
    public static <T> T[] array(Collection<T> elements, Class<T> clazz) {
        return elements.toArray((T[]) Array.newInstance(clazz, elements.size()));
    }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)