java – 虽然类型相同但我得到的是ClassCastException事件.为什
发布时间:2020-12-15 08:45:52 所属栏目:Java 来源:网络整理
导读:我对 Java不太新,虽然我以前从未真正使用过Sets, 所以有人可以帮帮我吗? 我有以下问题; 但首先,这是我的代码: HashMapPosition[],String save = io.getSave();Position[][] saved_pos = (Position[][]) save.keySet().toArray(); 虽然在第二行,Java抛出了C
我对
Java不太新,虽然我以前从未真正使用过Sets,
所以有人可以帮帮我吗? 我有以下问题; HashMap<Position[],String> save = io.getSave(); Position[][] saved_pos = (Position[][]) save.keySet().toArray(); 虽然在第二行,Java抛出了ClassCastException,但为什么呢? 那么我能做什么,我需要投这个. 解决方法
toArray()方法实际上并不知道它是在一组Position [] s上调用的;它只知道它是在一组上被调用的. (这是因为泛型如何在Java中实现;在运行时没有太多信息可用.)因此,它只返回一个完整的Partition [] s的Object [],而不是返回一个真正的Partition [] [] . (不同之处在于Object []可以包含任意对象 – 在调用之后,写入saved_pos [0] = new Object()会有效 – 而真正的Partition [] []会引发ArrayStoreException,如果你试过的话将其中一个元素设置为新的Object().)
幸运的是,有一个单独的toArray(…)方法可以使用,你可以告诉它你想要的数组类型,如下所示: Position[][] saved_pos = save.keySet().toArray(new Position[0][]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |