Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/02/2017, 22:11
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Problemas con Reflection al usar herencias

Les cuento que pude hacer que las superclases no tomen los métodos de las subclases:

Código Java:
Ver original
  1. private LinkedList<Object>loadMethods(IPersistente ip) throws Exception{
  2.         LinkedList<Method> m = new LinkedList();
  3.         Method[] me = (ip.getClass().getSuperclass() != null) ? ip.getClass().getSuperclass().getDeclaredMethods() : ip.getClass().getDeclaredMethods();
  4.         for(Method campo : me){            
  5.             if (campo.getName().startsWith("get") && !campo.getName().startsWith("getClass")) {
  6.                 Method metodo = campo;
  7.                 if(metodo.getParameterCount() == 0) {
  8.                     if(metodo.isAnnotationPresent(Sort.class)){
  9.                         m.add(metodo);
  10.                     }
  11.                 }
  12.             }            
  13.         }
  14.         if(ip instanceof IDependiente && !ip.check()){
  15.             Collections.sort(m, new SortDesc());
  16.         } else {
  17.             Collections.sort(m, new SortAsc());
  18.         }
  19.         return load(ip, m);
  20.     }

Pero cuando quiero guardar la información de la subclase en su respectiva tabla me falla, cómo aparece aquí:

Código Java:
Ver original
  1. Method[] me = (ip.getClass().getSuperclass() != null) ?
  2.                 // aquí me llega siendo una subclase, cuando esto debería funcionar sólo con las superclases
  3.                 ip.getClass().getSuperclass().getDeclaredMethods() :
  4.                 ip.getClass().getDeclaredMethods();

Cómo ven falta poco, pero ese poco me complica, necesito sus respuestas y ayuda, por favor....

Saludos.