2

あなたが私の問題で私を助けることができるかどうか疑問に思っています。これはおそらく、検索する適切なキーワードがわからないことが原因です。

これは宿題ではなく、匿名化されただけです...

私はインターフェースとたくさんの実装クラスを持っています:

interface Fruit
Banana implements Fruit  
Apple implements Fruit  
....

Fruitユーティリティクラスがあります。これは、あらゆる種類の果物を取り、それをスライスする方法です。

public static Fruit[] slice(Fruit f, int pieces)

メソッドに渡すFruitと同じタイプのFruit配列を宣言するにはどうすればよいですか?

つまり、どのように自動化できますか?

Fruit[] a = new Apple[pieces];  

アップルをあげたら?

編集:説明

私はこのようなコードを持っています:

Fruit a = new Apple();
Fruit b = new Banana();
Fruit[] slices1 = FruitUtil.slice(a, 3); //slices1 should be an Apple
Fruit[] slices2 = FruitUtil.slice(b, 3); //slices2 should be a Banana
Fruit newApple = FruitUtil.copy(a); //newApple should be an Apple

引数で渡したものと同じタイプのFruitを作成するようにslice(Fruit f、intスライス)またはcopy(Fruit f)メソッドを作成するにはどうすればよいですか(各タイプのメソッドをオーバーライドしたり、instanceofチェックを実行したりする必要はありません) )。

4

2 に答える 2

6

まず、参照の配列をあきらめることをお勧めします。List代わりに使用してください。次に、それは比較的簡単です:

public static <T extends Fruit> List<T> slice(T fruit, int pieces)
于 2009-09-03T02:32:08.380 に答える
1

あるいは、リフレクションを使用することもできます: Array.newInstance(f.getClass(), pieces)

于 2009-09-03T02:42:53.963 に答える