Java - 调用ArrayList中对象的方法

时间:2013-06-12 14:10:02

标签: java object arraylist

我有一个 Kostka 类,它有自己的宽度(w),高度(h),x和y位置,以便稍后使用此方法在JPanel上绘制它

void maluj(Graphics g) {
    g.drawRect(x, y, w, h);
}

现在我需要制作更多它们并将它们添加到ArrayList中..然后为存储在ArrayList中的每个 Kostka 对象调用maluj(g)方法


到目前为止,我已经成功地创建了一个将Kostka对象存储在ArrayList中的方法,但我不知道如何调用他们的方法

class MyPanel extends JPanel {
    ArrayList kos = new ArrayList(5);

    void addKostka() {
        kos.add(new Kostka(20,20,20,20));
    }

    public void paintComponent (Graphics g) {
        super.paintComponent(g);
    }
}

2 个答案:

答案 0 :(得分:3)

调用方法

这是以正常方式完成的:

// where kostka is an instance of the Kostka type
kostka.whateverMethodYouWant();

但是,从列表中检索kostka的方法取决于您如何声明列表。

使用Good Ol'方式(Pre-Java 1.5 Style)

// where index is the position of the the element you want in the list
Kostka kostka = (Kotska) kos.get(index);

使用泛型(更好的方式)

ArrayList<Kostka> kos = new ArrayList<Kostka>(5);

Kostka kostka = kos.get(index);

答案 1 :(得分:2)

您可以执行“强制转换”以检索ArrayList的Kostka元素:

for (int i = 0; i < kos.size(); i++) {
    Kostka kostka = (Kotska)kos.get(i);
    kostka.maluj(g);
}

如果您使用的是支持Generics的Java版本,则无需使用强制转换。你可以这样做:

ArrayList<Kostka> kos = new ArrayList<Kostka>(5);

for (int i = 0; i < kos.size(); i++) {
    Kostka kostka = kos.get(i);
    kostka.maluj(g);
}