Explicação

Encontrei isso (e muitas outras coisas) num projeto aqui:

   List<Elemento> colecao = new ArrayList<Elemento>();
    //popula colecao...

  ....

   //alguem me explica pq ele fez isso?
   Elemento el = (Elemento)colecao.toArray()[0])

 ....

Pior que isso aparece direto nesse projeto e muitas vezes dentro de algum loop.
Sério, alguém me explica o que justificaria isso? Pensei pensei e não veio nenhuma justificativa plausível.

Tudo bem que ler um array é mais rápido e tals, mas não assim!

Como você faria para melhorar ???

Pode não ser a forma correta, mas se ele quer o primeiro objeto basta dar um .get(0). Mas ainda corre o risco de dar um IndexOutOfBoundsException, embora seja menos custoso e nem exija aquele cast.
Caso seja uma LinkedList um getFirst() seria bem mais apropriado.

Já o que ele fez foi um toArray depois um cast. Isso não é bizarro? Pra mim é demais.

Olá Tchello,

Esse código converte a colecao de Elementos em um array e em seguida pega o Objeto contido no indice 0 desse array fazendo um cast no Object para o tipo elemento.

è o meso que :

Object[] meuArray= colecao.toArray(); //converte a lista em array
Elemento e=(Elemento) myArray[0]; //pega o elemnto no indica 0 e faz um cast no object para o tipo elemento;

Espero ter ajudado

Fallow

Eu sei o que o código faz.

O que não entendi é POR QUE ele fez dessa maneira bizarra.

Tchello acho que o cara não conhece o método get…

troca isso e por garantia teste dps…

abrasssss

Vai ver ele não conhece e estava indisposto para pesquisar a API da Collections :twisted:

A única explicação racional seria se ele quisesse substituir elementos em posições arbitrárias do array e converter de volta numa lista. Mas é lógico que ele só fez isso porque não conhecia o método get(int index).

Eu usaria outros adjetivos.
Principalmente vendo o resto do projeto que esse cara arquitetou.

Fico atônito a cada método que preciso refatorar dessa merda.

Isso se chama “programação orientada a auto-complete”. Já vi muito isso - o pior é quando o cara nem tem o javadoc instalado direito, o que ocorre em 95% das vezes. Nesse caso, o cara simplesmente pega o primeiro método sugerido que não dá erro de compilação para o que ele quer fazer.

É por ai mesmo.
Ou seja, o jumento não sabe programar em Java e faz do primeiro jeito que funcionar.
Sim, falei jumento por que quis ser ameno na atribuição de adjetivo.

É por ai mesmo.
Ou seja, o jumento não sabe programar em Java e faz do primeiro jeito que funcionar.
Sim, falei jumento por que quis ser ameno na atribuição de adjetivo.[/quote]

É aí que eu queria chegar… heueheuehueheue

Bizarro é demais… eu por exemplo, peguei uns códigos assim aqui uma vez…

if(entidade.getCdDoc().compareTo(new Long("2030")) == 0){}

Fazer o que, tive que refatorar… heueheueheuehue

É por ai mesmo.
Ou seja, o jumento não sabe programar em Java e faz do primeiro jeito que funcionar.
Sim, falei jumento por que quis ser ameno na atribuição de adjetivo.[/quote]

É aí que eu queria chegar… heueheuehueheue

Bizarro é demais… eu por exemplo, peguei uns códigos assim aqui uma vez…

if(entidade.getCdDoc().compareTo(new Long("2030")) == 0){}

Fazer o que, tive que refatorar… heueheueheuehue[/quote]

É, tem coisas assim nesse projeto também.

Pior é que ele da umas quinhentas voltas e recupera a msm informação 15x pra fazer alguma operação.
Sempre da pior maneira possível que ele conseguiu imaginar.

Só consigo imaginar uma morte bem dolorosa pra um ser desses.

Que nada… uma pessoa dessa tem que viver… São por essas e por outras que o Java acaba na vista, de quem não entende PN de nada, com fama de lento e pesado…

Vamos torcer para que o nosso amigo aprenda boas práticas e não seja mais um “digitador” de Software…

Abs[]

Detalhe: o autor disso agora é arquiteto em outra empresa e participa do forum.
Se você se reconheceu: morra de vergonha, eu te odeio. :lol:

Pode não ser a forma correta, mas se ele quer o primeiro objeto basta dar um .get(0). Mas ainda corre o risco de dar um IndexOutOfBoundsException, embora seja menos custoso e nem exija aquele cast.
Caso seja uma LinkedList um getFirst() seria bem mais apropriado.

Já o que ele fez foi um toArray depois um cast. Isso não é bizarro? Pra mim é demais.[/quote]

Oi,

Ele não faz nem um ifzinho > 0 antes de pegar a posição ? :twisted:

Tchauzin!

Pode não ser a forma correta, mas se ele quer o primeiro objeto basta dar um .get(0). Mas ainda corre o risco de dar um IndexOutOfBoundsException, embora seja menos custoso e nem exija aquele cast.
Caso seja uma LinkedList um getFirst() seria bem mais apropriado.

Já o que ele fez foi um toArray depois um cast. Isso não é bizarro? Pra mim é demais.[/quote]

Oi,

Ele não faz nem um ifzinho > 0 antes de pegar a posição ? :twisted:

Tchauzin![/quote]

Nunca, nem !isEmpty().

Mas se participa do fórum, tem a obrigação de vir aqui e se explicar…

Hauahuahauahuahau

Abs []

Oi,

O pior é que mandei pesquisar por .toArray()[0] em nosso projeto e encontrei uma 1 vez.

No seguinte formato:

teste = (Cast)list.get(list.keySet().toArray()[0]);

Pior né? Só por Deus.

Tchauzin!

[quote=lina]Oi,

O pior é que mandei pesquisar por .toArray()[0] em nosso projeto e encontrei uma 1 vez.

No seguinte formato:

teste = (Cast)list.get(list.keySet().toArray()[0]);

Pior né? Só por Deus.

Tchauzin![/quote]

Noooosss sinhora da abadia!
Meu chefe tem razão: para o pior não há limites.
Motivador, não?