ArrayList.toArray() dúvida

3 respostas
S

Pessoal, alguem poderia me ajudar na seguinte questão,
eu tenho um conteiner C do tipo arraylist e meu método retorna uma String[], e eu notei que a classe arraylist tem um método que retorna Object[], então eu fiz o seguinte…
vo fazer uma linguagem exemplo ok?

public String[] getXXX(){
ArrayList al = new ArrayList();

//popula arraylist com strings

// … …

return (String[])al.toArray();

}

Seguinte, ele compila legal e tal, mas durante a execução ele da um CastException, a unica solução que eu consegui encontrar foi
criar uma variavel String[] do tamanho al.size() e popular o String[] com cada elemento do ArrayList com o CAST

o que eu fiz de errado? realmente nao posso fazer um CAST de Object[] para String[] ???
help! achei mt deselegante a minha solução

valeu a atenção!

3 Respostas

louds

Não, você não pode.

Porem existe uma forma de usar o toArray() de forma a resolver seu problema.

return (String[]) a.toArray(new String[al.size()]);
ricardolecheta

tente assim, existe um método toArray() que recebe um Object:

String[] s = new String[al.size()];
al.toArray(s);
return s;

[editado]o louds chegou antes :slight_smile: [/editado]

S

Obrigado pessoal, suas soluções foram mais elegantes que a minha!
e depois eu não sabia que dava pra fazer isso :slight_smile:

Valeu!

Criado 20 de novembro de 2003
Ultima resposta 21 de nov. de 2003
Respostas 3
Participantes 3