Criar ArrayList a partir de tipo de objeto/classe

6 respostas
xcah

Bom dia!.. dei uma procurada e não achei nada que atendesse exatamente ao que estou procurando então vamos lá!

Estou precisando criar um ArrayList de um tipo de classe que eu passar para não ter que criar vários ArrayLists de vários tipos de classes para poder fazer o que eu quero pra preenchê-los, sendo que dependendo de uma condição usaria apenas um deles.
Então, criei um método na classe DAO que envia para um outro método numa classe padrão a classe VO. Nesse método da classe padrão, eu quero criar um ArrayList do tipo da classe VO enviada.
Acho que ficou meio complicadinho de entender, então vou tentar dar uma exemplificada:

// método da classe DAO que eu passo a classe VO
public Class<? extends classeVO> retornavo()
	{
		classeVO classe = new classeVO();
		return classe.getClass();
	}

// método para pegar a classe e supostamente criar o ArrayList do tipo dela a partir do parâmetro passado
	public void pegarclasse(Class classe)
	{
		
		System.out.println(classe.getSimpleName()); // aqui só estou pegando o nome
		
		ArrayList arl = new ArrayList(); // aqui que está a dúvida... Queria tipo criar ArrayList<classe> arl = new ArrayList<classe>(); mas não funciona :P então queria saber como fazer isso
		
	}

Se alguém puder ajudar, agradeço ^^

6 Respostas

sowyer

Você está declarando a variável classe dentro do método retornaVO. logo, ela só existe lá dentro.

xcah

mas eu passo essa variável classe para o outro método pegarclasse(). Veja que eu consigo pegar o nome da classe que eu passei pra esse método a partir de

System.out.println(classe.getSimpleName());

aliás, esqueci de colocar o método que eu chamo o pegarclasse(), mas independente disso não faria diferença, qualquer classe que eu passasse por parâmetro estaria acessível dentro dele.
de qualquer forma:

public void testando() // testando() e retornavo() estão na mesma classe - classe DAO 
	{
		teste t = new teste(); // classe que está o pegarclasse()
		t.pegarclasse(retornavo());  // manda para a classe teste a classe VO que eu quero criar o ArrayList lá 
	}
Vini_Fernandes

Cara, e se voce tentar algo como:

import java.util.ArrayList;
import java.util.List;

public class MeuDAO<T> {
	
	 public List<T> pegarLista(){  
	          
	        List<T> lista = new ArrayList<T>(0);  
	        //TODO: aqui voce preenche a lista de acordo com a sua necessidade
	        return lista;  
	 }  
	
}

T+

xcah

Vini Fernandes, eu precisava que a lista fosse do tipo que eu passasse, pelo que testei aqui ele não pega o tipo do que eu estou enviando…

Vini_Fernandes

Cara, como esse tipo de decisao eh tomada em RUNTIME, acredito que voce tera que usar Reflection! Dê uma lida nos tutoriais aqui do GUJ mesmo!!!..

abrs

xcah

beleza, vou dar uma olhada aqui! Valeu!

Criado 5 de setembro de 2011
Ultima resposta 5 de set. de 2011
Respostas 6
Participantes 3