tipos sirven que para las interfaz interfaces implementacion entre diferencia concreta clases clase abstractas abstracta java android sqlite orm activeandroid

java - sirven - Tabla de clases abstractas de ActiveAndroid



para que sirven las clases abstractas (1)

Alguien sabe si es posible crear una tabla para una clase abstracta en ActiveAndroid. Por ejemplo, podría tener una clase abstracta de animales con dos clases concretas de perros y gatos. Quiero poder hacer algo como:

List<Animal> animals = new Select().from(Animals.class).execute();

que daría lugar a ''animales'' que contienen todos los perros y gatos salvados. O:

Animal animal = new Select().from(Animals.class).where("name = ?", name).executeSingle();

Donde ''animal'' podría ser un gato o un perro. Desafortunadamente, cuando hago esto, obtengo una excepción porque no se crea ninguna tabla para la clase abstracta Animal. ¿Alguien sabe cómo podría hacer esto usando ActiveAndroid?


Desafortunadamente, ActiveAndroid no admite la herencia de modelos de esa manera todavía ( https://github.com/pardom/ActiveAndroid/issues/14 , https://github.com/pardom/ActiveAndroid/issues/257 ).

Si quisieras modificar ActiveAndroid esto es lo que podrías hacer:

  • Cree algún tipo de anotación que le permita definir un modelo ( Animals ) como algo que no se conserva (consulte com.activeandroid.annotation.Table ).
  • Al tratar de ejecutar consultas para esa clase, podría usar la reflexión para determinar sus clases secundarias y luego hacer que realice esa consulta por clase secundaria.
  • Luego, básicamente, tomaría la lista de resultados para cada consulta y los combinaría en una sola lista y la devolvería.

Para ser honesto, nunca he visto herencia en ninguna biblioteca ORM de Android, y personalmente no creo que sea un buen patrón de diseño para los modelos. Es posible que desee reconsiderar su razonamiento para seguir este camino.