繁体   English   中英

自动选择和创建类对象

[英]Automatically selecting and creating class objects

让我们说我们有一个盒子类:

class Box
{
    private int width;
    private int height;

    //Box Constructor
    public Box( int height )
    {
        this.height = height;
        width = 450;
    }

}

和我们主要的一系列Box对象:

Box Box1 = new Box(147);
Box Box2 = new Box(178);
Box Box3 = new Box(784);

有没有办法使用“for”循环来浏览这些对象? 另外,您如何让计算机为我们创建类对象? 例如。 创建10个对象:

for( int i=0; i>10; i++)
{
    //method
}

使用集合(或数组,但通常首选集合):

List<Box> boxes = new ArrayList<Box>(10);
for (int i = 0; i < 10; i++) {
    boxes.add(new Box(i));
}

您可以将所有这些对象添加到数组(或)arraylist并循环它。

例:

List<Box> boxList = new ArrayList<Box>();
boxList.add(box1);
boxList.add(box2);
boxList.add(box3);

for( int i=0; i < boxList.size(); i++)
{
    //method
}

我想你的意思是

for(int i=0; i<10; i++)

在Java中你会这样做

Box[] boxes = new Box[10];
for(int i=0; i<10; i++) boxes[i] = new Box(i);

您需要将对象组合在一个列表或数组中。 然后,您可以遍历数组以创建对象和/或使用它们。

Box[] boxes = new Box[10];
for (int i = 0; i < 10; i++)
{
    boxes[i] = new Box(100);  // Create a new box object
}

为了遍历先前创建的对象,对象必须位于某种类型的集合中。 可以使用for循环创建对象

for( int i=0; i<10; i++)
{
    new Box(i);
}

如果您希望避免使用ArrayList的内存和处理开销,而是使用普通数组。

非迭代创作

假设我们知道物品的数量。

Box[] boxes = {
  new Box(1),
  new Box(2),
  new Box(3)
};

迭代创作

Box[] boxes = new Box[numBoxes];
for (int i=0; i<numBoxes; i++){
  boxes[i] = new Box(i);
}

迭代访问

for (Box b : boxes){
  doWhatever(b);
}

您需要为创建的对象提供引用容器并将其添加到其中。 如果您需要不同的构造函数参数(如您的示例中所示),则需要一个容器:

Integer[] boxSpecifications = new Integer[] { 10, 187, 781, 321 };
List<Box> boxes = new ArrayList<Box>();

for (int i = 0; i < boxSpecifications.length; i++) {
  boxes.add( new Box( boxSpecifications[ i ] ) ) ;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM