Olá!
Ao executar o código
String[] d = (String[]) usuarios.toArray();
Obtive a seguinte exceção
Caused by javax.faces.FacesException with message: "#{administrarUsuarioAction.enviarConvite(enviarConviteForm)}: javax.ejb.EJBTransactionRolledbackException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;"
Existe alguma maneira padrão da API para fazer isto? Ou vou ter que criar um array com o tamanho do List e ir iterando adicionando o conteudo do List no array?
Abraço!
Hum…
// Java 5.0
String[] d = usuarios.toArray(new String[0]);
// Java 1.4 ou anterior
String[] d = (String[]) usuarios.toArray(new String[0]);
Me pergunto por que os desenvolvedores do Java não fizeram um Collection.toArray() retornar um T[] direto, ao invés de Object[].
Por experiência própria digo que trabalhar com arrays usando tipos genéricos é um filme de terror dos piores.
Hum… isso é um subproduto da definição de Generics do Java. Você necessita passar como parâmetro alguma coisa que indique o tipo, para que a API possa retornar um array desse tipo. Por exemplo, toArray necessita receber um String[] para retornar um String[]; poderia haver uma API que recebesse uma String.class, por exemplo.