Pessoal, tenho um Vector de objetos por exemplo Carro.
Utilizo o comando .toArray() e me retorna um Object[].
O problema é que quando vou fazer um cast para Carro[] é gerado um ClassCastException.
Qual pode ser o erro?
Pessoal, tenho um Vector de objetos por exemplo Carro.
Utilizo o comando .toArray() e me retorna um Object[].
O problema é que quando vou fazer um cast para Carro[] é gerado um ClassCastException.
Qual pode ser o erro?
O Vector é de certa forma uma array de objetos, independentemente do que você coloque dentro dela. Ela não foi criada como uma array de carros. Por isso você não pode fazer esse cast.
Tente utilizar o método toArray(Object[] a), passando um Carro[] como parâmetro.
A documentação do método toArray(Object[]) da class Vector diz:
Esse método não daria certo?
sim, ele funciona de duas formas
1º - se voce passou um objetro nao-array:
vector.add(new Carro());
vector.add(new Carro());
vector.add(new Carro());
vector.add(new Carro());
// note, o toArray redimensiona o array do parametro pro tamanho
// necessário
Carro[] c = (Carro[])vector.toArray( new Carro[0] );
2º - quando se esta quandando arrays:
vector.add(new Carro[1]);
vector.add(new Carro[2]);
vector.add(new Carro[3]);
vector.add(new Carro[4]);
// note, o toArray redimensiona o array do parametro pro tamanho
// necessário
Carro[][] c = (Carro[][])vector.toArray( new Carro[0][0] );
// note, o toArray redimensiona o array do parametro pro tamanho
// necessário
Carro[] c = (Carro[])vector.toArray( new Carro[0] );
Opa, não é bem isso não, arrays em java não são redimensionaveis. Ocorre é que o toArray() aloca um array do mesmo tipo passado que tenha o tamanho necessario. Ou seja, a melhor forma de utilizar é:
// note, o toArray redimensiona o array do parametro pro tamanho
// necessário
Carro[] c = (Carro[])vector.toArray( new Carro[vector.size()] );
foi o q quiz dizer
Então o problema no caso do oliveira é que ele tá usando o toArray() sem argumentos?
Estou utilizando o método toArray() e não o toArray(Object[] a).