我如何使用 for each 循环来打印不同 类 的不同对象的 Arraylist

How can i use a for each loop to print an Arraylist of different objects of different classes

class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        Loan loan = new Loan();
        Date date = new Date();
        Strings strings = new Strings();
        Frame frame = new Frame();
        Circle circle = new Circle();

        ArrayList<Object> mylist = new ArrayList<Object>();
        mylist.add(loan);
        mylist.add(date);
        mylist.add(strings);
        mylist.add(frame);
        mylist.add(circle);

        for (Object i : mylist)
        {
            System.out.println(mylist.get(i));
        }
         /*
         //this method is working fine
         System.out.println(mylist.get(0));
         System.out.println(mylist.get(1));
         System.out.println(mylist.get(2));
         System.out.println(mylist.get(3));
         System.out.println(mylist.get(4));

         //this method is also working fine
         for (int i = 0; i < 4; i++)
         {
            System.out.println(mylist.get(i));
         }*/

    }
}

My Arraylist is of diiferent object types and all have fields with values and a toString method in each class (so that the printing is possible).....If i dont use a loop and if i use an iterating loop its working fine but i want to use a for each loop i used the above syntax but its showing errors.

改变

    for (Object i : mylist)
    {
        System.out.println(mylist.get(i));
    }

    for (Object i : mylist)
    {
        System.out.println(i);
    }

iforeach 循环中是对象本身而不是索引。

myList.forEach(System.out::println); 

并且不将 myList 声明为 ArrayList,而仅将其声明为 List - 更喜欢在可用时将变量声明为接口

这里:

for (Object i : mylist)
{
    System.out.println(mylist.get(i)); 
                                  ^----- error here
}

您使用 Object 变量作为参数调用 myList.get()
它在编译时无效,因为 ArrayList.get()int 作为参数:

E java.util.ArrayList.get(int index)

在某种程度上,您可以混合使用 foreach 和 "basic for" 语法。
"basic for"语句需要使用索引:

for (int i=0; i<mylist.size(); i++) {
     System.out.println(myList.get(i)); 
}

但是 foreach 语法简化了:

for (Object i : mylist) {
     System.out.println(i); 
}