clone()方法出错 import java.util.*; 公开课F1{ 公共静态void man(字符串[]args){ ArrayList a1=新的ArrayList(4); a1.加入(15); a1.加入(30); a1.加入(20); a1.加入(18); ArrayList a2=a1.clone(); 用于(整数:a2){ System.out.println(“Number=“+Number”); } } }

clone()方法出错 import java.util.*; 公开课F1{ 公共静态void man(字符串[]args){ ArrayList a1=新的ArrayList(4); a1.加入(15); a1.加入(30); a1.加入(20); a1.加入(18); ArrayList a2=a1.clone(); 用于(整数:a2){ System.out.println(“Number=“+Number”); } } },java,arraylist,Java,Arraylist,ArrayList实现了可克隆性,因此您可以通过这种方式进行克隆。 但是clone返回的是一个对象,而不是ArrayList,因此需要强制转换。 但是,如果您只需要在新实例中复制您的ARARYLIST,请考虑: import java.util.*; public class F1 { public static void man(String[] args) { ArrayList<Integer> a1 = new ArrayList<Integer&

ArrayList实现了可克隆性,因此您可以通过这种方式进行克隆。 但是clone返回的是一个对象,而不是ArrayList,因此需要强制转换。 但是,如果您只需要在新实例中复制您的ARARYLIST,请考虑:
import java.util.*;

public class F1 {
   public static void man(String[] args) {

      ArrayList<Integer> a1 = new ArrayList<Integer>(4);

      a1.add(15);
      a1.add(30);
      a1.add(20);
      a1.add(18);

      ArrayList<Integer> a2 = a1.clone();

      for (Integer number : a2) {
         System.out.println("Number = " + number);
      }
   }
}
ArrayList a2=新的ArrayList(a1);
a2将具有与a1相同的元素,但它是一个不同的对象。

克隆()方法不返回相同的类型。但是,它确实返回了
ArrayList
的副本;但是,它作为
java.lang.Object
返回

为了使代码按预期运行,将
clone()
调用返回转换为
ArrayList
ie:

ArrayList<Integer> a2 = new ArrayList<Integer>(a1);
ArrayList a2=(ArrayList)a1.clone();

编辑:“a1.clone()”而不是“a1.close()”

实际错误是什么?如何调用main()方法?我无法编译此方法,直到我强制转换
ArrayList a2=(ArrayList)a1.clone()之后,它编译并运行,尽管我不确定克隆是复制arraylist的最佳方法。
ArrayList<Integer> a2 = (ArrayList<Integer>) a1.clone();