2013-04-28 1 views
2

Я использую ArrayList для хранения некоторых строк образует массив строк:ArrayList.toString Исключение

ArrayList<String> list = new ArrayList<>(); 
list.add(strings[i]); 

дать тем, другую функцию я преобразовал их обратно в массив:

foo((String[]) list.toArray()); 

это дает мне возможность:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; 

Что я здесь делаю неправильно?

ответ

5

Вызов метода list.toArray() возвращает массив типа Object []. Вы не можете использовать это для String [], хотя в нем содержатся только строки.

Но вы можете создать массив типа String [] с братьями и сестрами List.toArray(), которая принимает исходный массив нужного типа:

foo(list.toArray(new String[ list.size() ])); 
1

Вы должны сделать

String[] t = new String[list.size()]; 
foo(list.toArray(t));