Комната: используйте класс, который расширяет ArrayList как сущность


Я создаю приложение для Android, используя библиотеку персистентности комнаты. У меня есть класс, который extends класс 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 , чтобы быть в нем, как сущность в комнату, но происходит ошибка компиляции, которая является:

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);

}

Если ваш ответ может помочь в любом случае, пожалуйста, поделитесь им со мной!

1 2

1 ответ:

Я хотел бы использовать MyDemoClass в качестве плейлиста. Я бы добавил песни в этот плейлист и сохранил его в базе данных

MyDemoClass это был бы простой объект Java (POJO) и имел бы поля, соответствующие простым свойствам плейлиста, таким как String, который служил бы именем, которое пользователи могут предоставлять и видеть в списках плейлистов. MyDemoClass будет не подклассом ArrayList.

Song был бы другой POJO и иметь поля, соответствующие простым свойства песни, такие как String для ее названия.

Поскольку в плейлисте может быть несколько песен, а песня может появляться в нескольких плейлистах, вам нужно будет создать сущность, представляющую это соединение, с внешними ключами, связанными с сущностями плейлиста и песни.

Использование отношений внешнего ключа слегка освещено вдокументации комнаты . Она должна быть освещена в любой книге, которая тратит значительное время на комнату. Например, вот предварительный просмотр издание моей главы о m: N отношениях в комнате (из этой книги).