java - 房间: Use class that extends ArrayList as Entity

标签 java android inheritance arraylist android-room

我正在使用 Room Persistence Library 制作 Android 应用程序。我有一个类扩展 ArrayList 类,如下所示:

@Entity(tableName = "the_table_name")
public class MyDemoClass<E extends AnotherDemoClass> extends ArrayList<E> {

  @PrimaryKey
  @NonNull
  @ColumnInfo(name = "id")
  private String id;

  @ColumnInfo(name = "title")
  private String title;

  @ColumnInfo(name = "creationdate")
  private Date creationDate;

  // Other stuff
}

我正在尝试添加此类,该类只允许扩展 AnotherDemoClass 的类作为 Room 的实体,但出现编译时错误,即:

error: cannot find symbol
        _result = new MyDemoClass<E>();
                                  ^
  symbol:   class E
  location: class MyDemoClassDao_Impl

我已经尝试了一个多小时来解决这个问题,但没有成功。

编辑: 这是我的Dao:

@Dao
public interface MyDemoClassDao {

  @Insert(onConflict = OnConflictStrategy.REPLACE)
  void insert(MyDemoClass<AnotherDemoClass> myDemoClass);

}

如果您的答案有任何帮助,请与我分享!

最佳答案

I'd like to use MyDemoClass as a playlist. I'd add Songs to this playlist and save it inside the database

MyDemoClass 将是一个普通的 Java 对象 (POJO),并且具有与播放列表的简单属性相对应的字段,例如用作 String用户可以提供并在播放列表名册中看到的名称。 MyDemoClass 不会ArrayList 的子类。

Song 将是另一个 POJO,并且具有与歌曲的简单属性相对应的字段,例如其标题的 String

由于播放列表可以包含多首歌曲,并且一首歌曲可以出现在多个播放列表中,因此您需要创建一个表示该连接的实体,并使用返回播放列表和歌曲实体的外键关系。

the Room documentation 中简要介绍了外键关系的使用。 。任何在 Room 上花费大量时间的书都应该涵盖它。例如,这里是 a preview edition of my chapter on M:N relations in Room (来自this book)。

关于java - 房间: Use class that extends ArrayList as Entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155388/

相关文章:

C++多态/继承问题: Redefinition of base functions vs virtual functions

java - 算法分析和结构识别

java - Proguard 混淆导致神秘错误

java - crawler4j CrawelController 类中的 NoSuchMethodError

java - 同时发出多个 Volley 请求

Java继承-添加方法

java - CPMXCG(比较和交换)在多处理器机器上到底如何工作?

android - 通知的后台服务不工作

java - 将布局文件添加到类中(Java Android Studio)

python - 参数如何通过 __getattr__ 传递给函数