Gerando instância completa de um objeto
Publicado por Francisco Souza 07/04/2009
[ Hits: 5.947 ]
Homepage: http://www.franciscosouza.net
Esta classe possui o método getCompleteInstance que retorna a instância completa de uma data classe, preenchendo valores padronizados para determinados tipos de campos.
O método utiliza os conceitos de recursão e introspecção. A classe está toda documentada.
package br.edu.ifes.defensor.util;
import java.lang.reflect.Method;
/**
* Classe com utilitários para trabalhar com instâncias.
*
* @author Francisco Antônio da Silva souza
* @version 1.0
*
*/
public class InstanceUtil {
/**
* Gera uma instância completa de uma classe, com valores padrões para
* tipos.
*
* Caso a classe esteja associada a outra classe, é ativada a recursividade,
* que cria instâncias completas em todas as associações de todas as
* classes.
*
* Este método pode ser lento em modelos de classes complexos e com muitas
* associações.
*
* @param cls
* Classe que terá uma instância completa.
* @return Objeto instanciado.
* @throws Exception
* Problemas de instanciação ou argumentos inválidos.
*/
public static Object getCompleteInstance(Class cls) throws Exception {
Method[] methods = cls.getDeclaredMethods();
Object obj = cls.newInstance();
for (Method method : methods) {
if (method.getName().substring(0, 3).equals("set")) {
Class parameter = method.getParameterTypes()[0];
Object value = null;
if (parameter.equals(Integer.class)) {
value = 0;
} else if (parameter.equals(Double.class)) {
value = 0.0;
} else if (parameter.equals(Boolean.class)) {
value = false;
} else if (parameter.equals(String.class)) {
value = "";
} else {
try {
value = InstanceUtil.getCompleteInstance(parameter);
} catch (Exception e) {
value = null;
}
}
Object[] args = { value };
method.invoke(obj, args);
}
}
return obj;
}
}
Conversor de bases decente não essas bostas que tem nesse site.
Conversor de temperatura (com gráficos)
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como quebrar senha usando john the ripper
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Não consigo instalar distro antiga no virtualbox nem direto no hd (22)
Podem me chamar de 1mbecil :) [RESOLVIDO] (29)









