![](/img/trans.png)
[英]can i declare a class with generic form and then cast the subclasses to the type that is declared generic in java
[英]Can I declare method to return Class object with restriction to subclasses of given type in Java?
假設我聲明了一些抽象方法,它將返回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
}
您可以將返回類型Class
更改為Class<? extends Animal>
Class<? extends Animal>
。 以下代碼將允許返回Cat.class
和Dog.class
,但不允許返回Integer.class
:
abstract public Class<? extends Animal> getProducedAnimalType();
客戶端可以編寫以下代碼並編譯正常:
public Class<? extends Animal> getProducedAnimalType()
{
return Fish.class; // Fish extends Animal
}
但是以下代碼將無法編譯:
public Class getProducedAnimalType()
{
return Integer.class;
}
public Class<? extends Animal> getProducedType() {
// return Integer.class; // compile time error: incompatible types
return Dog.class;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.