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

Java 如何实例化(在方法内部)实现同一接口的不同类?,java,interface,instantiation,Java,Interface,Instantiation,只是想知道你是否能帮我解决我的问题。这可能是因为我不知道要搜索的关键词 这不是作业,只是匿名 我有一个接口和一系列实现类: interface Fruit Banana implements Fruit Apple implements Fruit .... 我有一节水果实用课。这是一种将任何种类的水果切成片的方法 public static Fruit[] slice(Fruit f, int pieces) 如何声明水果数组与传递给方法的水果类型相同 ie如何实现自动化: Fru

只是想知道你是否能帮我解决我的问题。这可能是因为我不知道要搜索的关键词

这不是作业,只是匿名

我有一个接口和一系列实现类:

interface Fruit
Banana implements Fruit  
Apple implements Fruit  
....
我有一节水果实用课。这是一种将任何种类的水果切成片的方法

public static Fruit[] slice(Fruit f, int pieces)
如何声明水果数组与传递给方法的水果类型相同

ie如何实现自动化:

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

如何编写slice(Fruit f,int slice)或copy(Fruit f)方法,以便创建与在参数中传递的水果类型相同的水果(无需重写每种类型的方法,或执行instanceof检查)

首先,我建议放弃引用数组。使用
列表
。那么就比较简单了,

public static <T extends Fruit> List<T> slice(T fruit, int pieces)
公共静态列表切片(T个水果,int个)

或者,您可以使用反射:
Array.newInstance(f.getClass(),pieces)

难道“Fruit[]a=newapple[pieces];”还不够吗?它应该已经起作用了。还是我不明白你的问题?为你添加了一些澄清。。