Gerando instância completa de um objeto
Publicado por Francisco Souza 07/04/2009
[ Hits: 5.915 ]
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;
}
}
Manipulação de processos em Java
Conversor de temperatura (com gráficos)
Conversor de bases decente não essas bostas que tem nesse site.
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
É normal não gostar de KDE? (15)
Erro ao instalar programa, "você tem pacotes retidos quebrados&qu... (13)









