只是想知道你是否能帮我解决问题。这可能是因为我不知道要搜索的正确关键字。
这不是家庭作业,只是匿名......
我有一个接口和一堆实现类:
interface Fruit
Banana implements Fruit
Apple implements Fruit
....
我有一个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 f,int slice)或copy(Fruit f)方法,以便创建与参数中传递的相同类型的Fruit(无需为每种类型覆盖方法,或者做实例检查)
答案 0 :(得分:6)
首先,我建议放弃引用数组。请改用List
。然后它相对简单:
public static <T extends Fruit> List<T> slice(T fruit, int pieces)
答案 1 :(得分:1)
或者你可以使用反射: Array.newInstance(f.getClass(),pieces)