在Android Room中,实体类是指数据库中的表。你可以使用继承来定义实体类之间的关系。以下是一个使用继承的示例:
首先,创建一个基类Animal
,其中包含了一些共有的属性和方法:
@Entity
public abstract class Animal {
@PrimaryKey
public int id;
public String name;
public abstract void makeSound();
}
然后,创建一个继承自Animal
的子类Cat
和Dog
,并实现makeSound()
方法:
@Entity
public class Cat extends Animal {
public int lives;
@Override
public void makeSound() {
System.out.println("Meow");
}
}
@Entity
public class Dog extends Animal {
public String breed;
@Override
public void makeSound() {
System.out.println("Woof");
}
}
在上述示例中,Cat
和Dog
继承自Animal
,并添加了各自的属性和方法。它们都被标记为实体类@Entity
,这样它们就可以被Room框架识别为数据库中的表。
请注意,由于Animal
是一个抽象类,它自身不能被标记为实体类。但是,你可以在数据库操作中使用Animal
作为查询的返回类型或参数类型。
最后,你可以在AppDatabase
中定义一个包含所有实体类的抽象方法:
@Database(entities = {Cat.class, Dog.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract AnimalDao animalDao();
}
在上述示例中,entities
参数列出了所有的实体类。
这样,你就可以使用继承来定义Android Room中的实体类了。