如何实例化(在方法内)实现相同接口的不同类?

mas*_*her 2 java interface instantiation

只是想知道你是否能够帮我解决我的问题.这可能是因为我不知道要搜索的正确关键字.

这不是家庭作业,只是匿名......

我有一个接口和一堆实现类:

interface Fruit
Banana implements Fruit  
Apple implements Fruit  
....
Run Code Online (Sandbox Code Playgroud)

我有一个水果实用程序类.在这是一个方法,采取任何种类的水果切片.

public static Fruit[] slice(Fruit f, int pieces)
Run Code Online (Sandbox Code Playgroud)

如何声明Fruit数组与我传递给方法的Fruit类型相同?

即我如何自动化:

Fruit[] a = new Apple[pieces];  
Run Code Online (Sandbox Code Playgroud)

如果我给它一个苹果?

.

编辑:澄清

我会有这样的代码:

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
Run Code Online (Sandbox Code Playgroud)

我如何编写切片(Fruit f,int slice)或copy(Fruit f)方法,以便创建与我在参数中传递的相同类型的Fruit(不必为每种类型覆盖方法,或者执行instanceof检查) )

Tom*_*ine 6

首先,我建议放弃引用数组.请List改用.然后它相对简单:

public static <T extends Fruit> List<T> slice(T fruit, int pieces)
Run Code Online (Sandbox Code Playgroud)