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

Hola a todos, espero que estén bien, tengo una consulta para hacer y es que estoy automatizando las altas y bajas, de hecho funcionan sólo que no andan con las herencias:

ParamBuilder.java

Código Java:
Ver original
  1. private LinkedList<Object>loadMethods(IPersistente ip) throws Exception{
  2.         LinkedList<Method> m = new LinkedList();
  3. // mi problema está en el getDeclaredMethods() que lo uso para que me obtenga los get de la clase creada pero no los de la superclase.  
  4.        for(Method campo : ip.getClass().getDeclaredMethods()){
  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.     }

En UsuarioModel traté de usar casting pero no funcionó, y así tengo el save del mismo:

Código Java:
Ver original
  1. @Override
  2.     public void save(IPersistente row) throws Exception {
  3.         if(row.getId() == 0){
  4.             System.out.println(this.sp.insert());
  5. // No me obtiene los get de la clase usuario, intenté usar downcasting pero no funcionó.
  6.             this.sp.getBD().conmand(this.sp.insert(), this.pm.getParam(row));
  7.             row.setId(this.maxId());
  8.         } else {
  9.             System.out.println(this.sp.update());
  10.             this.sp.getBD().conmand(this.sp.update(), this.pm.getParam(row));
  11.         }        
  12.         if(row instanceof Comprador){
  13.             Comprador c = (Comprador) row;
  14.             new CompradorModel(this.ip).save(c);
  15.         } else if(row instanceof Subastador){
  16.             Subastador s = (Subastador) row;
  17.             new SubastadorModel(this.ip).save(s);
  18.         } else {
  19.             Administrador a = (Administrador) row;
  20.             new AdministradorModel(this.ip).save(a);
  21.         }  
  22.     }

Digamos que soy nuevo usando Reflections, Metadatos y Anotaciones en Java, hace semanas que no le encuentro la vuelta.

Espero sus respuestas, las cuales agradeceré.

Saludos