对不起,如果我的格式不好,第一次在 StackOverflow 上。我有一个 FruitBuilder 类,用于一组相同类型的对象,它们都是 Fruit 类的扩展,FruitBuilder 包含一组看起来像这样的变量:
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;
}
这很好用,除了它创建了一个新的 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
}
}
有没有更简单的方法来做到这一点?