[英]Cannot return subclasses of abstract class in implementations of an abstract method
我有一個抽象類的兩個子類,每個子類都實現其父類的抽象方法。 我希望每種返回類型都有不同的返回類型,盡管這些返回類型又是不同抽象類的子類。 見下文:
public abstract class Gardener {
public abstract ArrayList<Flower> getFlowers();
}
public class GardererA extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Daisy>();
}
}
public class GardererB extends Gardener {
public ArrayList<Flower> getFlowers() {
return new ArrayList<Rose>();
}
}
public abstract class Flower {}
public class Daisy extends Flower {}
public class Rose extends Flower {}
顯然,Java不允許我這樣做,但是我對如何獲得此功能一無所知。 有任何想法嗎?
使用通配符:
public abstract class Gardener {
public abstract ArrayList<? extends Flower> getFlowers();
}
您可以使用如下泛型:
public abstract class Gardener<T extends Flower> {
public abstract ArrayList<T> getFlowers();
}
public class GardererA extends Gardener<Daisy> {
public ArrayList<Daisy> getFlowers() {
return new ArrayList<Daisy>();
}
}
public class GardererB extends Gardener<Rose> {
public ArrayList<Rose> getFlowers() {
return new ArrayList<Rose>();
}
}
public abstract class Flower {}
public class Daisy extends Flower {}
public class Rose extends Flower {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.