【发布时间】:2020-04-01 12:53:35
【问题描述】:
我有一个像这样的抽象类:
public abstract class AnimalService<T extends Animal> {
...
public T callAPI() {
// here the Class<T> can be Fish.class or Salmon.class or any child class type of Animal
return restTemplate.getForObject(url, Class<T>, params);
}
}
还有一个子类:
public class FishService<T extends Fish> extends AnimalService<Fish> {
...
}
还有一个孙子班:
public class SalmonService extends FishAnimalService<Salmon> {
...
}
我认为这种遗产存在设计问题。但是当我调用callAPI()(FishService 或SalmonService)时,我怎样才能实现这一点,我能够传递确切的类类型(例如Fish.class 或Salmon.class)我在哪里打电话?
【问题讨论】:
-
小修正:你的二班应该是
public class FishService<T extends Fish> extends AnimalService<T>。
标签: java generics design-patterns