Java中基于类的数组中增强的FoR循环

Java中基于类的数组中增强的FoR循环,java,Java,我想知道的是如何基于数组中对象的类为数组编写增强的for循环。我知道如何根据索引号进行for循环,比如它是奇数还是偶数,但我正在寻找基于类的for循环。例如: Array[] Kind = new Array[3]; Kind[0] = new Fruit(xxx,yyy,zzz) Kind[1] = new Veg(xxx,yyy,zzz) Kind[2] = new Fruit(xxx,yyy,zzz) Kind[3] = new Veg(xxx,yyy,zzz) 水果和蔬菜类是从Kind

我想知道的是如何基于数组中对象的类为数组编写增强的for循环。我知道如何根据索引号进行for循环,比如它是奇数还是偶数,但我正在寻找基于类的for循环。例如:

Array[] Kind = new Array[3];
Kind[0] = new Fruit(xxx,yyy,zzz)
Kind[1] = new Veg(xxx,yyy,zzz)
Kind[2] = new Fruit(xxx,yyy,zzz)
Kind[3] = new Veg(xxx,yyy,zzz)

水果和蔬菜类是从Kind类创建和扩展的。我需要写一个FOR循环,输出一些水果和一些不同的蔬菜

首先,您需要修复程序:与其声明数组数组
array[]
,不如声明基类数组
Kind
,如下所示:

Kind[] kind = new Kind[4];
kind[0] = new Fruit(xxx,yyy,zzz);
kind[1] = new Veg(xxx,yyy,zzz);
kind[2] = new Fruit(xxx,yyy,zzz);
kind[3] = new Veg(xxx,yyy,zzz);
for (Kind item : kind) {
    System.out.println(item.toString());
}
现在,如果您想为
Kind
Fruit
Veg
子类打印不同的内容,请根据需要重写这两个类的
toString
。这将允许您查看基类的实例
Kind
,并将打印发送到相应类中的方法:

public class Fruit extends Kind {
    @Override
    public string toString() {
        return "Fruit "+ ... // Fill in the text that you wish to print
    }
}
public class Veg extends Kind {
    @Override
    public string toString() {
        return "Veg "+ ... // Fill in the text that you wish to print
    }
}
打印可以这样做:

Kind[] kind = new Kind[4];
kind[0] = new Fruit(xxx,yyy,zzz);
kind[1] = new Veg(xxx,yyy,zzz);
kind[2] = new Fruit(xxx,yyy,zzz);
kind[3] = new Veg(xxx,yyy,zzz);
for (Kind item : kind) {
    System.out.println(item.toString());
}

上面对
toString()
的调用是可选的-您可以调用
System.out.println(项)也是。我添加了对
toString()
的调用,以表明其中没有“魔力”。。。水果和蔬菜应该知道如何处理这个问题。一般来说,如果您正在检查instanceof,那么您的OO设计出了问题。
Kind
是一个类吗?按照您编写的方式,
Array
是您的类,
Kind
是一个变量名。另外,您在数组中只分配了3个元素,并试图分配给4个元素,因此您将得到一个越界异常。也许你的意思是
Kind[]数组=新的种类[4]
然后设置
数组[0]=
…您复制了OP的错误,初始化数组时只保存3个对象,而不是给定的4个对象。@Blazto在初始化时不保存。您将初始化为该长度。[3] 是位于[0]、[1]、[2]的3个对象。