私のフォーマットが良くない場合は申し訳ありませんが、初めて StackOverflow を使用します。FruitBuilder クラスのすべての拡張機能である同じ型のオブジェクトのセットの FruitBuilder クラスがあります。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);
新しい果物を作成し、それを ArrayList の果物に追加する makeFruit というコピー メソッドがあり、次のようになります。
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
}
}
それを行う簡単な方法はありますか?