Tom*_* S. 3 java casting exception class
我对Java并不太新,虽然我以前从未真正使用过Sets,所以有人可以帮助我吗?
我有以下问题; 但首先,这是我的代码:
HashMap<Position[], String> save = io.getSave();
Position[][] saved_pos = (Position[][]) save.keySet().toArray();
Run Code Online (Sandbox Code Playgroud)
虽然在第二行,Java抛出了ClassCastException,但为什么呢?显然,返回的Array save.keySet().toArray()确实包含Position[][]s,尽管不幸的是,toArray()在类Set中只返回一个Object[]数组.
那么我能做什么,我需要投这个.
该toArray()方法实际上并不知道它是在一组Position[]s 上调用的; 它只知道它是在一组上被调用的.(这是因为在Java中如何实现泛型;在运行时没有很多信息可用.)因此,它只返回一个Object[]完整的Partition[]s,而不是返回true Partition[][].(不同之处在于一个Object[] 可以包含任意对象 - 在你调用之后它会有效saved_pos[0] = new Object()- 如果你试图将其中一个元素设置为,Partition[][]则会产生一个真值.)ArrayStoreExceptionnew Object()
幸运的是,有一个单独的toArray(...)方法可以使用,你可以告诉它你想要的数组类型,如下所示:
Position[][] saved_pos = save.keySet().toArray(new Position[0][]);
Run Code Online (Sandbox Code Playgroud)