clone()方法出错

时间:2014-03-14 15:44:09

标签: java arraylist

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

2 个答案:

答案 0 :(得分:1)

ArrayList实现了Cloneable,因此您可以克隆这种方式。 但是clone会返回一个Object,而不是一个ArrayList,所以你需要强制转换。 但是,如果您只需要在新实例中复制ArrayList,请考虑执行以下操作:

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

a2将具有与a1相同的元素,但它是一个不同的对象。

答案 1 :(得分:0)

clone()方法不返回相同的类型。但是,它会返回ArrayList的副本;但是,它以java.lang.Object返回。

为了使代码按预期运行,请将clone()调用返回转换为ArrayList<Integer>,即:

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

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