ValueOf que usa generics

5 respostas
joparibeiro

Tenho a seguinte classe abstrata com um método valueOf(String value) que deve instanciar e me devolver um objeto do tipo T (generico), que por sua vez é um subtipo (RG, CPF, etc) de T

public abstract class DocumentoValidado implements Serializable {
        //...	

	private String value;

	protected DocumentoValidado(String value) throws DocumentoInvalidoException {		
	    //...
        }

	public <T extends DocumentoValidado> T valueOf(String value) {

	}

	//...	
}

como fazer esta instancia no método valueOf? Lembrando que o construtor da classe passada em T recebe um parametro String value.

Desde já, agradeço.

5 Respostas

mauriciot.silva

Bom pelo o seu codigo em nenhum momento vs informa a classe T

vs pode fazer da seguinte forma

public <T ex Document> T valueOf(Class<T> clazz, String value){
try{
clazz.getConstructor(String.class).newInstance(value);
}....
}
drsmachado

mauriciot.silva:
Bom pelo o seu codigo em nenhum momento vs informa a classe T

vs pode fazer da seguinte forma

public <T ex Document> T valueOf(Class<T> clazz, String value){ try{ clazz.getConstructor(String.class).newInstance(value); }.... }


O que vem a ser vs???

mauriciot.silva

o q isso ira acrescentar no forum?

joparibeiro

drsmachado:
mauriciot.silva:
Bom pelo o seu codigo em nenhum momento vs informa a classe T

vs pode fazer da seguinte forma

public <T ex Document> T valueOf(Class<T> clazz, String value){ try{ clazz.getConstructor(String.class).newInstance(value); }.... }


O que vem a ser vs???

“vs” deve ser Vossa Senhoria, rsrs.

Brincadeiras a parte, a dica do mauriciot.silva foi boa.
Problema resolvido.

mauriciot.silva

ou entao vs poder mudar a declaracao da classe

public abstract class DocumentoValidado<T ex DocumentoValidado> implements Serializable

public final T  valueOf(String value){
// logica para pegar tipo Generico....
try{ 
 // clazz seria o tipo generico...
 clazz.getConstructor(String.class).newInstance(value);  
}.... 
}

nao ha problema o method ser final, pois Documento eh Abstract… e jah terah uma logica implementada para as outras sub classes

Criado 31 de outubro de 2012
Ultima resposta 31 de out. de 2012
Respostas 5
Participantes 3