Gerando instância completa de um objeto

Publicado por Francisco Souza 07/04/2009

[ Hits: 5.622 ]

Homepage: http://www.franciscosouza.net

Download InstanceUtil.java




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.

  



Esconder código-fonte

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;

   }

}

Scripts recomendados

detectando firebird

HACK :: Microsoft SQL 2000 JDBC Driver

Exemplo BubleSort

Conversor de temperatura (com gráficos)

Gerar CSV, DOC e PDF


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts