Métodos com tipo dinâmico [Resolvido]

5 respostas
I

Pessoal, eu estou tentando fazer um método que seja genérico no retorno de tipos para não precisar fazer Casting para o tipo que desejo.

Isso é possível?

a minha idéia é assim:

Classe cls = getBussinesClass(“Classe”);

o meu método instância a minha classe de negócio, o parâmetro “Classe” deve ser o retorno do método!!

Compreenderam? :shock:

hehehe :slight_smile:

5 Respostas

viniciusfaleiro

Eu posso estar muito enganado … más se entendi bem o que você está querendo é um design pattern chamado factoring… Seria uma “fábrica de objetos” que de acordo com o paramtro que vc passar ela retorna o objeto correto… más eu acho q vc não vai conseguir fugir do casting… a não ser que crie vários métodos com retorno diferente para cada tipo de parametrol… ex:

public ArrayList addTest(String o)

public Vector addTest(Int g)

Será q era isso ou viajei d+?? hahahaha

I

viniciusfaleiro:
Eu posso estar muito enganado … más se entendi bem o que você está querendo é um design pattern chamado factoring… Seria uma “fábrica de objetos” que de acordo com o paramtro que vc passar ela retorna o objeto correto… más eu acho q vc não vai conseguir fugir do casting… a não ser que crie vários métodos com retorno diferente para cada tipo de parametrol… ex:

public ArrayList addTest(String o)

public Vector addTest(Int g)

Será q era isso ou viajei d+?? hahahaha

Viajou não cara, vc entendeu direitinho…hehehe!!!

Caramba achei que dava para fazer o casting dinâmico, mas já vi que num tem pra onde correr…kkkk

Valeu mano, brigadão pela ajuda!!!

<><

Marky.Vasconcelos
public <T> T getBussinesClass(Class<T> t){
return (T) t.newInstance();
}

//Em um método
ObjetoX obj = getBussinesClass(ObjetoX.class);
I
Mark_Ameba:
public <T> T getBussinesClass(Class<T> t){
return (T) t.newInstance();
}

//Em um método
ObjetoX obj = getBussinesClass(ObjetoX.class);

Mark_Ameba me desculpe, mas não entendi direito, poderia explicar?

o método que criei eh esse:

public Object getBusinessClass(Seg_loginT login, String className) {
    Object object = null;
    try {		
	object = BusinessBase.getBusinessFactory(login.getCdlogin(), "br.com.pacote.bl."+className);
	return object;
    } catch (Exception e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	return null;
    }		
}
I

Mark_Ameba

eu usei a sua dica e reformulei o meu método…

public <T> T getBusinessClass(Seg_loginT login, Class<T> t) {
	try {
		t.cast(BusinessBase.getBusinessFactory(login.getCdlogin(), t.getName()));
		return (T)t.newInstance();
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return null;
	}		
}

e tah funcinando direitinho… :smiley:

Muito obrigado pela dica… :wink:

Criado 7 de julho de 2009
Ultima resposta 7 de jul. de 2009
Respostas 5
Participantes 3