對不起,如果我的格式不好,首次在StackOverflow。 我有一組相同類型的水果類的所有擴展對象的FruitBuilder班,FruitBuilder包含了一組變量是這樣的:有沒有辦法強制方法使用不使用instanceof的子類構造函數?
public Apple redApple = new Apple(size, color, price);
public Orange bigOrange = new Orange(size, color, price);
public Pear greenPear = new Pear(size, color, price);
,我有所謂的複製方法makeFruit,創建一個新的水果,並將其添加到一個ArrayList的水果,看起來像這樣:
public Fruit makeFruit(Fruit f){
Fruit fruit = new Fruit(f.size, f.color, f.price);
fruits.add(fruit);
return fruit;
}
這工作得很好,只是它創建了一個新的水果,而不是所需要的子類,我可以把它通過使用一系列工作的instanceof檢查,然後逐個強制子類:
public Fruit makeFruit(Fruit f){
if (f instanceof Apple){
Apple apple = new Apple(f.size, f.color, f.price);
fruits.add(apple);
return apple;
//snip
}
}
有沒有更簡單的方法來做到這一點?
你似乎是使用類作爲一個類型,你可以像'枚舉類型{蘋果,橘子,梨}'的屬性,只是有一個場,這和只有一個'水果'類。 –
這是因爲每個子類都有不同的方法來覆蓋超類。 –
我懷疑它們也可以是基於屬性的。 –