Java 相同类型强制转换异常
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
springboot 出现两个相同的类强转类型报错 java.lang.ClassCastException
今天出现了一个令我感到惊奇的问题
Java 强转类型,相信大家并不陌生,通常来说,强转类型都是我们知道这个类可以转换成另一个类,可能是他的父类或者是他的同类,这样转换一般来说千百年都不会出错。例如下面的
//Father 是 son 的父类
Father father = new Son();
Son son = (String)father;
- 1
- 2
- 3
- 4
上面这种方式当然是没有问题的,但是当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。例如:
//Father 是 son 的父类
Father father = new Father();
Son son = (String)father;
- 1
- 2
- 3
- 4
通常我们在不确定是不是可转的时候,我们会使用instanceof 关键字来判断一下,避免出错的情况。例如:
//Father 是 son 的父类
Father father = new Father();
//当满足条件的时候就可以强转了,否则我就不执行
if(father instanceof Son){
Son son = (String)father;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
是时候打破常规了
随着框架的普及,现在很多人都用上了springboot,也引入了越来越多的包,这个时候就很可能会出现包冲突,或者类型引用错误,或者对现有的一些代码造成影响,在这里,我遇到了自己人强转自己人报错的问题,也就是本文的重点“ java.lang.ClassCastException”
spring boot 项目中如果引入了 spring的devtools 包,就经常会产生这个问题,这个坑我找了几个小时。
runtime("org.springframework.boot:spring-boot-devtools:${springBootVersion}")
- 1
这个包如果用的不熟的话,找问题找起来就很费劲了,好了,各位晚安,愿天下代码无bug.
/**
* ┌─┐ ┌─┐ + +
* ┌──┘ ┴───────┘ ┴──┐++
* │ │
* │ ─── │++ + + +
* ███████───███████ │+
* │ │+
* │ ─┴─ │
* │ │
* └───┐ ┌───┘
* │ │
* │ │ + +
* │ │
* │ └──────────────┐
* │ │
* │ ├─┐
* │ ┌─┘
* │ │
* └─┐ ┐ ┌───────┬──┐ ┌──┘ + + + +
* │ ─┤ ─┤ │ ─┤ ─┤
* └──┴──┘ └──┴──┘ + + + +
* 神兽保佑
* 代码无BUG!
*/
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
</div>
posted on
2019-11-03 03:24
DiligentCoder
阅读(...)
评论(...)
编辑
收藏
Java 相同类型强制转换异常的更多相关文章
- Java的类型强制转换
不说基本类型,没什么意思. 小括号的类型转换,在引用上,表示我坚定的确信,该未知类型一定是我转的类型,或者是我转的类型的子类. 这个转换逻辑和基本类型是不一致的.它不会进行任何具体的操作,只是一种标识 ...
- 简述Java变量和强制转换类型
简述Java变量和强制转换类型 java变量 1. java变量 变量:顾名思义,就是在java执行程序过程中可以发生改变的量,就好比方程式中的未知数X一样. 变量的内存分配过程 int a ; // ...
- C#高级编程笔记 2016年10月8日运算符和类型强制转换
1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...
- C#高级编程9-第7章 运算符和类型强制转换
运算符和类型强制转换 1.运算符 运算符的简化操作 条件运算符: if-else的简化操作,也称三元运算符.如果条件为真,返回一个值,为假返回另外一个值. condition?true_value:f ...
- C# 运算符和类型强制转换(6) 持续更新
C#支持的运算符 https://msdn.microsoft.com/zh-cn/library/6a71f45d(v=vs.140).aspx checked 和 unchecked ; b++; ...
- 【读书笔记】C#高级编程 第七章 运算符和类型强制转换
(一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 < ...
- C语言指针类型 强制转换
关于C语言指针类型 强制转换 引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...
- OC中的类型强制转换
在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用.例如有一个字符串对象@"111.22",需要转为NSNumber对象,最简单的方法就是 ...
- java 中的强制转换
强制转换分两种,一种是基础类型强制转换(Type Conversion),一种是引用类型强制转换(Class Casting):
随机推荐
- LeetCode. 3的幂
题目要求: 给定一个整数,写一个函数来判断它是否是 3 的幂次方. 示例: 输入: 27 输出: true 代码: class Solution { public: bool isPowerOfThr ...
- Pywinauto使用方法
3 Pywinauto使用 连接为 http://pywinauto.github.io/ 3.1 关联到一个应用,用以下方法: ? start_(path) connect_(handle or p ...
- AtCoder Grand Contest 040 C - Neither AB nor BA
传送门 好妙的题啊 首先容易想到简单容斥,统计合法方案数可以考虑总方案数减去不合法方案数 那么先考虑如何判断一个串是否合法,但是直接判断好像很不好搞 这时候就需要一些 $magic$ 了,把所有位置下 ...
- hdu 4857 反向拓扑问题
尤其要注意拓扑的分层问题 不难理解 就是不怎么好想到 拓扑的思路这里就不累述了 #include <iostream> #include <cstdio> #include & ...
- (三)第一个 Hibernate项目
1.创建java工程,并导入hibernate所需要的jar包 2.通过IDE构建一个基础的Hibernate工程. 产生 hibernate.cfg.xml的框架总配置文件. H ...
- ASP.NET Core本身已经集成了一个轻量级的IOC容器
1.services.AddTransient<IApplicationService,ApplicationService>//服务在每次请求时被创建,它最好被用于轻量级无状态服务(如我 ...
- 最简单的理解 建立TCP连接 三次握手协议
最简单的理解一:建立TCP连接:三次握手协议 客户端:我要对你讲话,你能听到吗:服务端:我能听到:而且我也要对你讲话,你能听到吗:客户端:我也能听到.…….互相开始通话…….. 二:关闭TCP ...
- 基于【 Docker】二 || Docker的入门安装
一.前提条件 本文介绍 Docker CE 的安装使用. 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3. ...
- nRF24L01无线介绍
CE:RX或TX模式选择 CSN:SPI片选信号 SCK:SPI时钟 MOSI:SPI数据输入 MISO:SPI数据输出 IRQ:可屏蔽中断脚 51测试程序 实测可用! #define TX_ADR_ ...
- ASE —— 第一次结对作业
问题定义 游戏规则: N个玩家,每人写一个或两个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0.618,得到G值. 提交的数字最靠近 ...