带子类的房间

时间:2017-07-12 10:00:02

标签: java android android-room

我希望坚持一些数据类。我一直在调查使用Room这个,如果它只是一个独立数据类的情况,这是非常直接的。然而,我试图坚持的对象是子类,这增加了一层复杂性。

此代码尚未编译,仅为了说明目的而写作

所以用一个简单的直接课

    @Entity(tableName = TABLE_NAME)
   public class Event implements MyEvent {
   public static final String TABLE_NAME = "events";
   public static final String DATE_FIELD = "date";

   @PrimaryKey(autoGenerate = true)
   private int id;
   private String name;
   private String description;
   @ColumnInfo(name = DATE_FIELD)
   private LocalDateTime date;

   public Event(int id, String name, String description, LocalDateTime date) {
       this.id = id;
       this.name = name;
       this.description = description;
       this.date = date;
   }

   @Override
   public int getId() {
       return id;
   }

   @Override
   public String getName() {
       return name;
   }

   @Override
   public String getDescription() {
       return description;
   }

   @Override
   public LocalDateTime getDate() {
       return date;
   }

   @Override
   public String toString() {
       return "Event{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", description='" + description + '\'' +
               ", date=" + date +
               '}';
   }

   public long getDaysUntil() {
       return ChronoUnit.DAYS.between(LocalDateTime.now(), getDate());
   }
}

这是直截了当的,但如果你有例如

  public class MusicEvent extends Event implements MyEvents {

  private String musicType;
  private boolean supportActs;

   @Override
   public int getId() {
      return id;
   }

   @Override
   public String getName() {
       return name;
   }

   @Override
   public String getDescription() {
       return description;
   }

   @Override
   public LocalDateTime getDate() {
       return date;
   }

  public void setMusicType(String musicType) {
      this.musicType = musicType;
  }

  public String getMusicType() {
      return this.musicType;
  }

  public void setSupportActs(boolean supportActs) {
      this.supportActs = supportActs;
  }

    public boolean getSupportActs() {
      return this.supportActs;
  }
  }

  public interface MyEvents {
     int getId();
     String getName();
     String getDescription();
     LocalDate getDate();
  }

所以我想做的是有一个事件表,我不希望有多个表,例如音乐活动,电影活动,戏剧活动。

或者如果他们都实现了MyEvents,他们都可以输入MyEvents。

我希望能够持久保存所有Event对象,并在需要时检索所有事件对象。

如果有人可以就此分享一些信息,我会非常感激。

0 个答案:

没有答案