classcastexceptionjava中ClassCastException是什么意思?

classcastexception  时间:2021-06-22  阅读:()

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com 请教怎么解决?

java.lang.ClassCastException 这个是类型转换异常, baseDao.find(hql);这个方法返回的值是List,不能转换成List,需要用List接收,然后再进行循环逐条转换目标类型。

java.lang.ClassCastException: java.lang.Long

hiberante返回count是一个对象,不是一个类型, 所以需要 Query query = session.createQuery("select count(*) as n from Test"); List list = query.list(); Long n=(Long)l.get(0);//long类型啊,别忘了 这里的n就是数值了。

ClassCastException错误求教高手?

类型转换异常,dao.add_rate(cardid, endtime, starttime, money); 往数据库里面添加数据,类型不匹配,没有添加成功,或者是你在其他地方要转换成int类型的时候没有转换成功.

如何使用returnbrokenresource

返回博客列表 原 Jedis returnResource使用注意事项 zgw06629 发布时间: 2015/04/27 14:12 阅读: 10158 收藏: 10 点赞: 2 评论: 1 在线上环境发现了一个工作线程异常终止,看日志先是一些SocketTimeoutException,然后突然有一个ClassCastException redis.clients.jedis.exceptions.JedisConnectionException: .SocketTimeoutException: Read timed out ... java.lang.ClassCastException: [B cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:208) at redis.clients.jedis.Jedis.sismember(Jedis.java:1307) 经过在本地人工模拟网络异常的情境,最终复现了线上的这一异常。

又经过深入分析(提出假设-->验证假设),最终找出了导致这一问题的原因。

见如下示例代码: JedisPool pool = ...; Jedis jedis = pool.getResource(); String value = jedis.get("foo"); System.out.println("Make SocketTimeoutException"); System.in.read(); //等待制造SocketTimeoutException try { value = jedis.get("foo"); System.out.println(value); } catch (JedisConnectionException e) { e.printStackTrace(); } System.out.println("Recover from SocketTimeoutException"); System.in.read(); //等待恢复 Thread.sleep(5000); // 继续休眠一段时间 等待网络完全恢复 boolean isMember = jedis.sismember("urls", ""); 以及日志输出: bar Make SocketTimeoutException redis.clients.jedis.exceptions.JedisConnectionException: .SocketTimeoutException: Read timed out Recover from SocketTimeoutException at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:210) at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:47) at redis.clients.jedis.Protocol.process(Protocol.java:131) at redis.clients.jedis.Protocol.read(Protocol.java:196) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:283) at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:202) at redis.clients.jedis.Connection.getBulkReply(Connection.java:191) at redis.clients.jedis.Jedis.get(Jedis.java:101) .tcl.recipevideohunter.JedisTest.main(JedisTest.java:23) Caused by: .SocketTimeoutException: Read timed out at .SocketInputStream.socketRead0(Native Method) at .SocketInputStream.read(SocketInputStream.java:152) at .SocketInputStream.read(SocketInputStream.java:122) at .SocketInputStream.read(SocketInputStream.java:108) at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:204) ... 8 more Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:208) at redis.clients.jedis.Jedis.sismember(Jedis.java:1307) .tcl.recipevideohunter.JedisTest.main(JedisTest.java:32) 分析: 等执行第二遍的get("foo")时,网络超时,并未实际发送 get foo 命令,等执行sismember时,网络已恢复正常,并且是同一个jedis实例,于是将之前的get foo命令(已在输出流缓存中)一并发送。

执行顺序如下所示: 127.0.0.1:9379> get foo "bar" 127.0.0.1:9379> sismember urls (integer) 1 故在上述示例代码中最后的sismember得到的结果是get foo的结果,即一个字符串,而sismember需要的是一个Long型,故导致了ClassCastException。

为什么线上会出现这一问题呢?原因是其执行redis的逻辑类似这样: while(true){ Jedis jedis = null; try { jedis = pool.getResource(); //some redis operation here. } catch (Exception e) { logger.error(e); } finally { pool.returnResource(jedis); } } 因若是网络异常的话,pool.returnResource(jedis)仍能成功执行,即能将其返回到池中(这时jedis并不为空)。

等网络恢复后,并是多线程环境,导致后续其他某个线程获得了同一个Jedis实例(pool.getResource()), 若该线程中的jedis操作返回类型与该jedis实例在网络异常期间第一条未执行成功的jedis操作的返回类型不匹配(如一个是get,一个是sismember),则就会出现ClassCastException异常。

这还算幸运的,若返回的是同一类型的话(如lpop("queue_order_pay_failed"),lpop("queue_order_pay_ess")),那我真不敢想象。

如在上述示例代码中的sismember前插入一get("nonexist-key")(redis中不存在该key,即应该返回空).

java.lang.ClassCastException: [Ljava.lang.Long; cannot be cast to java.lang.

java类型转换异常Long不转换为其他类型 java.lang.x x是你要转换的类型。

java类型转换是自动向高级类型转换,比如 int +string 结果是String

java中ClassCastException是什么意思?

数据类型转换错误,比如有个 String temp="abc"; 你 (int)temp就会报错了,以为他们类型不一样,但是你(object)temp就行,因为object是他们的父类

杭州王小玉网-美国CERA 2核8G内存19.9元/月,香港,日本E3/16G/20M CN2带宽150元/月,美国宿主机1500元,国内宿主机1200元

官方网站:点击访问王小玉网络官网活动方案:买美国云服务器就选MF.0220.CN 实力 强 强 强!!!杭州王小玉网络 旗下 魔方资源池 “我亏本你引流活动 ” mf.0220.CNCPU型号内存硬盘美国CERA机房 E5 2696v2 2核心8G30G总硬盘1个独立IP19.9元/月 续费同价mf.0220.CN 购买湖北100G防御 E5 2690v2 4核心4G...

轻云互联22元/月,美国硅谷、圣何塞CN2GIA云服务器,香港沙田cn2建站vps仅25元/月

轻云互联怎么样?轻云互联,广州轻云网络科技有限公司旗下品牌,2018年5月成立以来,轻云互联以性价比的价格一直为提供个人,中大小型企业/团队云上解决方案。本次轻云互联送上的是美国圣何塞cn2 vps(免费50G集群防御)及香港沙田cn2 vps(免费10G集群防御)促销活动,促销产品均为cn2直连中国大陆线路、采用kvm虚拟技术架构及静态内存。目前,轻云互联推出美国硅谷、圣何塞CN2GIA云服务器...

pacificrack:VPS降价,SSD价格下降

之前几个月由于CHIA挖矿导致全球固态硬盘的价格疯涨,如今硬盘挖矿基本上已死,硬盘的价格基本上恢复到常规价位,所以,pacificrack决定对全系Cloud server进行价格调整,降幅较大,“如果您是老用户,请通过续费管理或升级套餐,获取同步到最新的定价”。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款VPS特征:基于KVM虚拟,纯SSD raid...

classcastexception为你推荐
win7中文语言包windows7怎样汉化离线包百度地图离线包如何下载?bean是什么意思javabean和实体类的区别?4k超高清视频下载哪里有4K片源下载啊?补充:刚入手了一个4k电视盒,小美盒子V9,说是支持4k。正好我的电视机是4k的,想知道哪里有得下载呢?有朋友说我傻,现在基本上没有4k片源下载,而且不知道什么时候才有。等到流行的时候也许这个机器又淘汰啦!我该怎么办啊?素数算法求100以内的素数的算法ico监管在中国ICO为什么不合法renderpartialHtml.RenderPartial 报错无处不在的意思心无所住是什么意思pat是什么格式怎么将自己做的PS图片保存为PAT格式?shoujiao手机板aoblox怎么从英文变成中文
解析域名 济南域名注册 网页空间租用 linuxapache虚拟主机 老域名全部失效请记好新域名 3322动态域名 美元争夺战 国内永久免费云服务器 空间打开慢 免费ddos防火墙 圣诞节促销 建立邮箱 韩国名字大全 刀片服务器的优势 免费dns解析 服务器监测 便宜空间 湖南idc 实惠 香港ip 更多