ClassCastException。

ClassCastException。这个错误也很常见,通常在程序中出现强制类型转换时出现这个错误,如下面这段代码所示:publicstaticMapm=newHashMap(){ { put("a","2"); } }; publicstaticvoidmain(String[]args){ IntegerisInt=(Integer)m.get("a"…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

这个错误也很常见,通常在程序中出现强制类型转换时出现这个错误,如下面这段代码所示:

        public static Map m = new HashMap() {
		{
			put("a", "2");
		}
	};

	public static void main(String[] args) {
		Integer isInt = (Integer) m.get("a");
		System.out.println(isInt);
	}

当强制将本来不是Integer类型的字符串转成Integer类型时会报如下错误:

ClassCastException。

JVM在做类型转换时会按照如下规则进行检查:

  •     对于普通对象,对象必须是目标类的实例或目标类的子类的实例。如果目标类是接口,那么会把他当作实现了该接口的一个子类。
  •     对于数组类型,目标类必须是数组类型或java.lang.Object、java.lang.Cloneable、java.io.Serializable。

如果不满足上面的规则,JVM会报这个错误了。要避免这个错误有两种方式:

  •     在容量类型中显式的指明这个容器所包含的对象类型,如在上面的Map中可以写为Map<String, Integer> m = new HashMap<String, Integer>(),这样上面的代码在编译阶段就会检查通过。
  •     先通过instanceof检查是不是目标类型,然后再进行强制类型转换。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195746.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月11日 上午10:22
下一篇 2025年10月11日 上午11:01


相关推荐

  • css伪元素选择器有哪些_css3伪选择器

    css伪元素选择器有哪些_css3伪选择器伪元素选择器有::first-letter,::first-line,::selection,::before,::after

    2025年6月3日
    4
  • Pycharm的基本使用以及如何配置Python运行环境

    Pycharm的基本使用以及如何配置Python运行环境编译器介绍 Pycharm 一个 code 编译器 主要用于 python 语言开发 功能很强大 有社区版本和专业版本 付费 社区版是提供给编程爱好者进行学术交流的 所以它免费的 功能不如专业版强大 专业版需要付费 但专业版可以激活成功教程 如果不想激活成功教程可以选择 VScode 等其他编译器 具体选择根据个人情况而定 编译器的基本使用首次打开编译器 会看到新手指引 可以根据这个新手指引快速上手 如果不想看可以直接关掉 code 样式设置路径 file Settings Editor General F

    2026年3月27日
    3
  • [转]三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法

    [转]三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法三种流行的命名法则目前 业界共有四种命名法则 驼峰命名法 匈牙利命名法 帕斯卡命名法和下划线命名法 其中前三种是较为流行的命名法 驼峰命令法 Camel nbsp 也称骆驼式命名法正如它的名称所表示的那样 是指混合使用大小写字母来构成变量和函数的名字例如 下面是分别用骆驼式命名法和下划线法命名的同一个函数 程序代码 printEmploye print em

    2026年3月18日
    2
  • 【贪玩巴斯】C/C++文件IO流操作的 seekp和seekg详解「建议收藏」

    【贪玩巴斯】C/C++文件IO流操作的 seekp和seekg详解「建议收藏」文件流对象有两个成员函数,分别是seekp和seekg。它们可以用于将读写位置移动到文件中的任何字节。一、如何来记这几个函数呢seek是寻找寻求的意思2.tell是告诉告知的意思那p即put放和输出的意思,在这里是保存到文件那g即get是获取,读入的意思,在这里是从文件读取所以seekp可用于将信息put(放入写入)到文件中2.seekg则可用于从文件中get(获取)信息。tellg()函数不需要带参数,它返回当前定位指针的位置,也代

    2022年6月1日
    44
  • Ajax的面试题_javascript面试题及答案

    Ajax的面试题_javascript面试题及答案一、什么事Ajax?为什么要用Ajax?(谈谈对Ajax的认识)什么是Ajax:  Ajax是“AsynchronousJavaScriptandXML”的缩写。他是指一种创建交互式网页应用的网页开发技术。  Ajax包含下列技术:    基于web标准(standards-basedpresentation)XHTML+CSS的表示;    使用DOM(Document…

    2022年8月27日
    6
  • Pycharm 免费激活专业版(图文详解)

    Pycharm 免费激活专业版(图文详解)使用这个教程可以激活包括 Pycharm 在内的所有 JetBrain 系列软件 如 PHPStrom IDEA 等材料教育邮箱 带 edu 后缀的 email 激活 1 打开主页 https www jetbrains com 2 注册账号 3 点击 SignUp 后 返回如下页面 4 回到你填写的教育邮箱地址 收到一封信 5 注册账号 6 设置权限 点击 PyCharm 下载软件 7 进入 PyCharm 点击右上方的 Help gt Register 8 查看权限 一般

    2026年3月27日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号