Recuperando ArrayList de outra classe

10 respostas
blima10

Olá,

Preciso de uma ajuda!
Eu crio um ArrayList em uma classe preencho este e na outra classe quando vou usa-ló ele está vazio.
Quando faço a instância da classe ele cria novamente o ArrayList, não é verdade?
Agora como faço para usar um ArrayList preenchido em uma classe diferente da que o criei?

Obrigado pela atenção!

10 Respostas

Thiago_Luis

Olá, tudo com.

Cria o ArrayList como static.
Assim, ele não criará outro ArrayList.

Abraço

gilmarcand

Você preenche o ArrayList quando? Ele é público? Posta teu código que fica mais fácil de identificar o problema.

blima10

Obrigado amigos!

O Thiago respondeu minha pergunta!

vlw…

ViniGodoy

Thiago Luis:
Olá, tudo com.

Cria o ArrayList como static.
Assim, ele não criará outro ArrayList.

Abraço

Essa geralmente é uma péssima solução para o problema. Eu diria que é está entre as piores possíveis.
É preferível passar o ArrayList como parâmetro.

Thiago_Luis

ViniGodoy:
Thiago Luis:
Olá, tudo com.

Cria o ArrayList como static.
Assim, ele não criará outro ArrayList.

Abraço

Essa geralmente é uma péssima solução para o problema. Eu diria que é está entre as piores possíveis.
É preferível passar o ArrayList como parâmetro.

Seria uma solução bem mais simples :frowning:
Por que que é ruim utilizar esta forma?
Explica ai que isso me interessou.

Abraço

Hellmanss

ArrayList suaArrayList = new ArrayList();

Se tiver contrutor para a array

SuaClasse suaClasse = new SuaClasse(suaArrayList);

Se não tiver, gera Getter & Seterrs na SuaClasse e depois de instanciar, chama o metodo.

ArrayList array= new ArrayList();
SuaClasse c1 = new SuaClasse();

c1.setSuaArrayList(array);

ps* Não sei se é isso exatamente que vocÊ quer… posta seu código, pois assim é dificil saber qual é realmente sua duvida caro colega!

ViniGodoy

Por que:

  1. Seu static teria que ser público, o que torna ele uma variável global. Elas tendem a tornar o programa instável, já que com o tempo vc esquece de onde são usadas.
  2. Não é uma solução encapsulada. A classe que controla o arraylist pode fazer verificações, coisas static não são verificadas;
  3. Variáveis static jamais são coletadas da memória, a menos que vc explicitamente set elas como null. Isso cria altas chances de memory leaks no seu programa;
  4. Variáveis static podem deixar uma implementação completamente hostil contra multi-threading. Nem com sincronização resolveria o problema.
Thiago_Luis

ViniGodoy:
Por que:

  1. Seu static teria que ser público, o que torna ele uma variável global. Elas tendem a tornar o programa instável, já que com o tempo vc esquece de onde são usadas.
  2. Não é uma solução encapsulada. A classe que controla o arraylist pode fazer verificações, coisas static não são verificadas;
  3. Variáveis static jamais são coletadas da memória, a menos que vc explicitamente set elas como null. Isso cria altas chances de memory leaks no seu programa;
  4. Variáveis static podem deixar uma implementação completamente hostil contra multi-threading. Nem com sincronização resolveria o problema.

Maravilha,

Vou tomar mais cuidado ao usar static da próxima vez.
Não sabia dessas paradas não :smiley:

Vlw pela força.

Dan_Pimentel

Thiago Luis:
ViniGodoy:
Thiago Luis:
Olá, tudo com.

Cria o ArrayList como static.
Assim, ele não criará outro ArrayList.

Abraço

Essa geralmente é uma péssima solução para o problema. Eu diria que é está entre as piores possíveis.
É preferível passar o ArrayList como parâmetro.

Seria uma solução bem mais simples :frowning:
Por que que é ruim utilizar esta forma?
Explica ai que isso me interessou.

Abraço

Estou com o mesmo problema, tenho várias classes que precisam modificar a mesma arraylist, como posso fazer isso sem usar o static?

Grato, desde ja.

ViniGodoy

Dan Pimentel:
Thiago Luis:
ViniGodoy:
Thiago Luis:
Olá, tudo com.

Cria o ArrayList como static.
Assim, ele não criará outro ArrayList.

Abraço

Essa geralmente é uma péssima solução para o problema. Eu diria que é está entre as piores possíveis.
É preferível passar o ArrayList como parâmetro.

Seria uma solução bem mais simples :frowning:
Por que que é ruim utilizar esta forma?
Explica ai que isso me interessou.

Abraço

Estou com o mesmo problema, tenho várias classes que precisam modificar a mesma arraylist, como posso fazer isso sem usar o static?

Grato, desde ja.

Passando o ArrayList como parâmetro para todas elas.

Criado 10 de maio de 2009
Ultima resposta 19 de jun. de 2014
Respostas 10
Participantes 6