【发布时间】:2021-10-11 15:09:01
【问题描述】:
我有一个声明为类似的基本服务
BaseService<M, S>
我有另一个服务扩展了声明的基本服务:
AnimalService extends BaseService<Animal, AnimalStatus>
现在,我需要另一个服务来传递模型狗而不是动物(狗扩展动物),创建一个新服务会很好地工作:
DogService extends BaseService<Dog, AnimalStatus>
问题是,DogService 在功能上与 AnimalService 基本相同,因此为狗声明另一个服务只是重复 AnimalService 的代码。
有没有一种方法可以声明 DogService 以便它可以在使用新模型 Dog 时重用 Animal 服务中的代码,或者是否有一种方法可以以通用方式声明 AnimalService 以便它也可以接受模型狗?
【问题讨论】:
-
AnimalService<T extends Animal> extends BaseService<T, AnimalStatus>可以解决问题。这样,我们可以使用Animal或Animal的任何其他子类(例如Dog)对其进行初始化。
标签: java generics inheritance