Explicação

24 respostas
Tchello

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!

24 Respostas

adriano_si

Como você faria para melhorar ???

Tchello

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.

paulo1911

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

Tchello

Eu sei o que o código faz.

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

renanreismartins

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

troca isso e por garantia teste dps…

abrasssss

Andre_Brito

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

esmiralha

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).

Tchello

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.

E

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.

Tchello

É 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.

adriano_si

É 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.

É 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

Tchello

É 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.

É 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

É, 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.

adriano_si

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[]

Tchello

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

lina

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.

Oi,

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

Tchauzin!

Tchello

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.

Oi,

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

Tchauzin!

Nunca, nem !isEmpty().

adriano_si

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

Hauahuahauahuahau

Abs []

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!

Tchello

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!

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

Tchello

Agora imaginem um projeto inteiro feito e arquitetado por esse ser.

Desculpem-me, mas ninguém merece.

lina

Tchello:
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!

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

Oi,

Acho que ele queria garantir que existe uma chave dentro do hash. hahahaha \o/

Adoro isso!

Tchauzin!

Tchello

ahhuahuahua
Olha essa então, acabei de achar:

Boolean temAlgumaCoisa = false;

 while(temAlgumaCoisa != true) {

      ...

      Boolean tem = algumMetodo();
      //W-T-F
      if(tem.booleanValue() == true{
           temAlgumaCoisa = true; 
      } 

 }

Eu mereço, joguei pedra na cruz, pqp.

adriano_si

Tchello:
ahhuahuahua
Olha essa então, acabei de achar:

Boolean temAlgumaCoisa = false;

 while(temAlgumaCoisa != true) {

      ...

      Boolean tem = algumMetodo();
      //W-T-F
      if(tem.booleanValue() == true{
           temAlgumaCoisa = true; 
      } 

 }

Eu mereço, joguei pedra na cruz, pqp.

Ele tava estudando pra SCJP… só pode… a gente só faz esses testes quando está estudando pra SCJP…

Abs []

Tchello

adriano_si:
Tchello:
ahhuahuahua
Olha essa então, acabei de achar:

Boolean temAlgumaCoisa = false;

 while(temAlgumaCoisa != true) {

      ...

      Boolean tem = algumMetodo();
      //W-T-F
      if(tem.booleanValue() == true{
           temAlgumaCoisa = true; 
      } 

 }

Eu mereço, joguei pedra na cruz, pqp.

Ele tava estudando pra SCJP… só pode… a gente só faz esses testes quando está estudando pra SCJP…

Abs []

Mas de qualquer maneira, não bastava ele ter feito isso? :

Boolean temAlgumaCoisa = false;

 while(temAlgumaCoisa != true) {

      ...

     temAlgumaCoisa = algumMetodo();
  
 }
Criado 4 de janeiro de 2011
Ultima resposta 4 de jan. de 2011
Respostas 24
Participantes 8