Gerando instância completa de um objeto
Publicado por Francisco Souza 07/04/2009
[ Hits: 5.805 ]
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; } }
Implementação de lista duplamente encadeada orientada a objetos
Pilha Dinâmica Orientada a Objetos com Java
Ordenar um lista estática seqüencial de complexidade média (método da seleção)
Nenhum comentário foi encontrado.
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Erro na atualização dos apps na barra de tarefas (5)
Ajuda Pra Melhoria do NFTABLES. (2)