假设我声明了一些抽象方法,它将返回 Class 对象(如 Dog.class、Cat.class),如下所示:
abstract public Class getProducedAnimalType();
我是否可以强制扩展此 API 的客户端仅返回表示类的 Class 对象,这些对象是 Animal.class 的子类?就像是:
abstract public Class<representing subclass of Animal> getProducedAnimalType();
所以扩展我的课程的客户不能写:
public Class getProducedAnimalType() {
// Integer not extends Animal!, shoud not compile!
return Integer.class;
}
但可以:
public Class getProducedAnimalType() {
return Fish.class; // Fish extends Animal
}