java - 如何遍历类的数组列表

标签 java oop foreach polymorphism

import java.util.ArrayList;

public class circleTester {

        public static void showCenter(Circle2 circle) {
            System.out.println(circle.getName() + "'s " + circle.getCenter());
        }

    public static void main (String []args) {

        ArrayList<Circle2> circles = new ArrayList<Circle2>();
        circles.add(new Circle2(3, 5, 4));
        circles.add(new Circle2(4, 2, 5));
        circles.add(new Cylinder2(5, 2, 3, 5));
        circles.add(new Cylinder2(3, 4, 7, 6));
        circles.add(new Oval2(6, 5, 7, 3));
        circles.add(new Oval2(4, 2, 3, 1));
        circles.add(new OvalCylinder2(2, 3, 4, 5, 6));
        circles.add(new OvalCylinder2(3, 3, 5, 4, 7));

        for (Circle2 i : circles) {
            showCenter(circles(i));
        }
      }
    }

我有四个独立的类:Circle2、Cylinder2、Oval2 和 OvalCylinder2。它们都源自 Circle2 和 OvalCylinder2。我试图将它们放入数组列表中,然后迭代数组列表并通过 showCenter 函数运行每个实例,该函数将调用两个 getter(getName 和 getCenter)来告诉您类的名称(Circle、Cylinder、椭圆形和椭圆形圆柱体),其中心位置为 (x, y)。但是,在我的 for 循环中,出现错误:

“circleTester 类型的方法circles(Circle2) 未定义” 我该如何解决这个问题?

最佳答案

使用 showCenter(i) 而不是 showCenter(circles(i)),因为 i 已经是 Circle2< 的对象 类型

for (Circle2 circle : circles) {
    showCenter(circle);
}

关于java - 如何遍历类的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105096/

相关文章:

c++ - g++ 4.4.7 -std=gnu++0x 应该编译 "for each"构造吗?

postgresql - 如何使用 Struts 2 将数据插入 Postgres 数据库或从 Postgres 数据库检索数据?

python - 参数的子类初始化

java - 为什么应用于该对象的 System.out.println 会打印这个短语?

php - 通过foreach循环插入多个表单域的数据

c# - 在选中列表框中创建选中项目的字符串数组

java - Mybatis SQL session 提交看起来比以下代码慢

java - http服务器和客户端实现head和get方法

java - 使用 POI api 将页脚添加到 ms word

oop - 通过golang中的接口(interface)模拟功能