Gerando instância completa de um objeto
Publicado por Francisco Souza 07/04/2009
[ Hits: 6.011 ]
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;
}
}
Ordenar um lista estática seqüencial de complexidade média (método da seleção)
J2ME - Simples teste de unicode
Manipulação de processos em Java
Nenhum comentário foi encontrado.
Por que seu __DIR__ falhou ou o "inferno" dos caminhos no PHP
Preparando-se para certificações da LPI através do LPI Lab
Migração de Arch Linux para repositórios CachyOS (Uso de Instruções v3 e v4)
Ativando o modo Quake no XFCE4-Terminal
[Tutorial] Configurando Multimaster no Samba 4 AD (DC02) + Explicação de FSMO Roles
[Resolvido] Google Chrome reclamando de perfil em uso após mudar hostname
Instalando o Tema de Ícones Tela Circle
Copiar Para e Mover Para no menu de contexto do Nautilus e Dolphin
Senhor Einstein tinha razão mesmo! [RESOLVIDO] (9)
Como instalar Warsaw no Gentoo? (1)
Da pra formatar um netbook MGB e usar algum linux nele? É possível usa... (4)









