java – 虽然类型相同但我得到的是ClassCastException事件.为什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 虽然类型相同但我得到的是ClassCastException事件.为什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1000字,纯文字阅读大概需要2分钟。
内容图文
![java – 虽然类型相同但我得到的是ClassCastException事件.为什么?](/upload/InfoBanner/zyjiaocheng/743/c004a9affe15411b8580232a86e8968f.jpg)
我对Java不太新,虽然我以前从未真正使用过Sets,
所以有人可以帮帮我吗?
我有以下问题;
但首先,这是我的代码:
HashMap<Position[], String> save = io.getSave();
Position[][] saved_pos = (Position[][]) save.keySet().toArray();
虽然在第二行,Java抛出了ClassCastException,但为什么呢?
显然,save.keySet().toArray()返回的Array确实包含Position [] [] s,尽管遗憾的是,类Set中的toArray()只返回一个Object []数组.
那么我能做什么,我需要投这个.
解决方法:
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][]);
内容总结
以上是互联网集市为您收集整理的java – 虽然类型相同但我得到的是ClassCastException事件.为什么?全部内容,希望文章能够帮你解决java – 虽然类型相同但我得到的是ClassCastException事件.为什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。