Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表<;对象>;java.lang.ClassCastException:java.util.Vector不能强制转换为java.util.ArrayList_Java_List_Arraylist_Vector - Fatal编程技术网

列表<;对象>;java.lang.ClassCastException:java.util.Vector不能强制转换为java.util.ArrayList

列表<;对象>;java.lang.ClassCastException:java.util.Vector不能强制转换为java.util.ArrayList,java,list,arraylist,vector,Java,List,Arraylist,Vector,这是我的简单代码。我需要一个ArrayList listOnayStatu的克隆。GtbEtobsOYenibelge是一个实体。但是有一个强制转换问题java.lang.ClassCastException:java.util.Vector不能强制转换为java.util.ArrayList。 多谢各位 List<GtbEtobsOYenibelge> listOnayStatu = new ArrayList<>(); List<GtbEtobsOYenibel

这是我的简单代码。我需要一个ArrayList listOnayStatu的克隆。GtbEtobsOYenibelge是一个实体。但是有一个强制转换问题java.lang.ClassCastException:java.util.Vector不能强制转换为java.util.ArrayList。 多谢各位

List<GtbEtobsOYenibelge> listOnayStatu = new ArrayList<>();
List<GtbEtobsOYenibelge> cloneOnayStatu;
listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
cloneOnayStatu =  ((List) ((ArrayList) listOnayStatu).clone());
List listOnayStatu=new ArrayList();
列出克隆状态;
listOnayStatu=servis.listOnayStatus4Belge(user.getBirimId().getId());
cloneOnayStatu=((List)((ArrayList)listOnayStatu.clone());

所有代码都是这样。

方法
servis.LISTONAYSTATUS4BERGE
返回一个。
向量
实现了
列表
接口,但不是
数组列表
。所以你不能把它扔给一个人

看看有问题的陈述:

cloneOnayStatu =  ((List) ((ArrayList) listOnayStatu).clone());
您正在复制一个向量并将其分配给
cloneOnayStatu
。您应该能够这样做:

cloneOnayStatu = (List<GtbEtobsOYenibelge>) ((Vector<GtbEtobsOYenibelge>)listOnayStatu).clone();

您只需使用
ArrayList
的复制构造函数,它接受
集合,您可以尝试将其保存为新的ArrayList

List<GtbEtobsOYenibelge> listOnayStatu = new ArrayList<>();
List<GtbEtobsOYenibelge> cloneOnayStatu;
listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
cloneOnayStatu =  new ArrayList(listOnayStatu);

此代码段不会导致您描述的错误。您可以共享完整的列表吗?谢谢Klitos,但是clone()方法不适用于列表。更新listOnayStatu时,cloneOnayStatu将同时更新。我希望cloneOnayStatu在更新时具有listOnayStatu的以前大小。
clone()
方法和
new ArrayList()都可以
constructor创建的副本在原始副本更新时不会更新。但是,请注意,这些副本只是参考文件的副本。如果引用的对象本身已更新,则两个列表都将看到更新,因为两个列表的元素都引用同一个对象。也许你想要一份深度拷贝。为此,您需要迭代所有元素并创建每个元素的副本。
List<GtbEtobsOYenibelge> listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
List<GtbEtobsOYenibelge> cloneOnayStatu = new ArrayList<>(listOnayStatu);
List<GtbEtobsOYenibelge> listOnayStatu = new ArrayList<>();
List<GtbEtobsOYenibelge> cloneOnayStatu;
listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
cloneOnayStatu =  new ArrayList(listOnayStatu);
cloneOnayStatu.addAll(listOnayStatu);