如何遍历类的数组列表 import java.util.ArrayList; 公共类电路员{ 公共静态void展示中心(圆圈2){ System.out.println(circle.getName()+“'s”+circle.getCenter()); } 公共静态void main(字符串[]args){ ArrayList圆圈=新的ArrayList(); 添加(新的圆圈2(3,5,4)); 添加(新的圆圈2(4,2,5)); 添加(新气缸2(5,2,3,5)); 添加(新气缸2(3,4,7,6)); 添加(新的卵形2(6,5,7,3)); 添加(新的卵形2(4,2,3,1)); 添加(新的椭圆柱体2(2,3,4,5,6)); 添加(新的椭圆柱2(3,3,5,4,7)); 用于(圆圈2 i:圆圈){ 展览中心(一);; } } }

如何遍历类的数组列表 import java.util.ArrayList; 公共类电路员{ 公共静态void展示中心(圆圈2){ System.out.println(circle.getName()+“'s”+circle.getCenter()); } 公共静态void main(字符串[]args){ ArrayList圆圈=新的ArrayList(); 添加(新的圆圈2(3,5,4)); 添加(新的圆圈2(4,2,5)); 添加(新气缸2(5,2,3,5)); 添加(新气缸2(3,4,7,6)); 添加(新的卵形2(6,5,7,3)); 添加(新的卵形2(4,2,3,1)); 添加(新的椭圆柱体2(2,3,4,5,6)); 添加(新的椭圆柱2(3,3,5,4,7)); 用于(圆圈2 i:圆圈){ 展览中心(一);; } } },java,oop,foreach,polymorphism,java-8,Java,Oop,Foreach,Polymorphism,Java 8,我有四个独立的类:Circle2、Cylinder2、Oval2和OvalCylinder2。它们都是从圆环2和椭圆柱面2衍生出来的。我试图将它们放入一个数组列表中,然后遍历数组列表并通过showCenter函数运行每个实例,该函数将调用两个getter(getName和getCenter)来告诉您类的名称(圆形、圆柱体、椭圆形和椭圆形圆柱),以及它的中心位置(x,y)。但是,在for循环中,我得到一个错误: “circleTester类型的方法圆(Circle2)未定义” 如何解决此问题?使用

我有四个独立的类:Circle2、Cylinder2、Oval2和OvalCylinder2。它们都是从圆环2和椭圆柱面2衍生出来的。我试图将它们放入一个数组列表中,然后遍历数组列表并通过showCenter函数运行每个实例,该函数将调用两个getter(getName和getCenter)来告诉您类的名称(圆形、圆柱体、椭圆形和椭圆形圆柱),以及它的中心位置(x,y)。但是,在for循环中,我得到一个错误:

“circleTester类型的方法圆(Circle2)未定义” 如何解决此问题?

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

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));
        }
      }
    }
使用
showCenter(i)
而不是
showCenter(圆圈(i))
因为
i
已经是
Circle2
类型的对象

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));
        }
      }
    }

foreach循环语法为:

for (Circle2 circle : circles) {
    showCenter(circle);
}
其内容为“集合中的每个T元素”。在您的情况下,
i
已具有
Circle2
的类型,并且可以直接传递到
showCenter
方法

for (T element : collection) {
  ... 
}
如果要使用索引来迭代列表,请执行以下操作:

for (Circle2 circle : circles) {
    showCenter(circle);
}
你可以把它和表达结合起来


如果您使用的是java8+

,则最新版本更可取。foreach循环语法为:

for (Circle2 circle : circles) {
    showCenter(circle);
}
其内容为“集合中的每个T元素”。在您的情况下,
i
已具有
Circle2
的类型,并且可以直接传递到
showCenter
方法

for (T element : collection) {
  ... 
}
如果要使用索引来迭代列表,请执行以下操作:

for (Circle2 circle : circles) {
    showCenter(circle);
}
你可以把它和表达结合起来

如果您使用的是java8+

的可能副本,则最新版本可能更可取