Преобразуйте универсальный список в массив

Я искал это, но к сожалению, я не получаю корректный ответ.

class Helper {
    public static <T> T[] toArray(List<T> list) {
        T[] array = (T[]) new Object[list.size()];
        for (int i = 0; i < list.size(); i++) {
            array[i] = list.get(i);
        }
        return array;
    }
}

Протестируйте его:

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("abc");
    String[] array = toArray(list);
    System.out.println(array);
}

Но существует брошенная ошибка:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at test.Helper.main(Helper.java:30)

Как решить это?


ОБНОВЛЕНИЕ

Я хочу этот метод, потому что иногда, тип в моем коде является слишком длинным:

newEntries.toArray(new IClasspathEntry[0])

Я надеялся бы звонить:

toArray(newEntries)

НАКОНЕЦ

Кажется невозможным создать такой метод, всем большое спасибо!

61
задан 29 June 2011 в 19:18

0 ответов

Другие вопросы по тегам:

Похожие вопросы: