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是他们的父类

vdsina:俄罗斯VPS(datapro),6卢布/天,1G内存/1核(AMD EPYC 7742)/5gNVMe/10T流量

今天获得消息,vdsina上了AMD EPYC系列的VDS,性价比比较高,站长弄了一个,盲猜CPU是AMD EPYC 7B12(经过咨询,详细CPU型号是“EPYC 7742”)。vdsina,俄罗斯公司,2014年开始运作至今,在售卖多类型VPS和独立服务器,可供选择的有俄罗斯莫斯科datapro和荷兰Serverius数据中心。付款比较麻烦:信用卡、webmoney、比特币,不支持PayPal...

华纳云E5处理器16G内存100Mbps688元/月

近日华纳云商家正式上线了美国服务器产品,这次美国机房上线的产品包括美国云服务器、美国独立服务器、美国高防御服务器以及美国高防云服务器等产品,新产品上线华纳云推出了史上优惠力度最高的特价优惠活动,美国云服务器低至3折,1核心1G内存5Mbps带宽低至24元/月,20G ddos高防御服务器低至688元/月,年付周期再送2个月、两年送4个月、三年送6个月,终身续费同价,有需要的朋友可以关注一下。华纳云...

RackNerd($199/月),5IP,1x256G SSD+2x3THDD

我们先普及一下常识吧,每年9月的第一个星期一是美国劳工节。于是,有一些服务商会基于这些节日推出吸引用户的促销活动,比如RackNerd有推出四款洛杉矶和犹他州独立服务器,1G带宽、5个独立IP地址,可以配置Windows和Linux系统,如果有需要独立服务器的可以看看。第一、劳工节促销套餐这里有提供2个套餐。两个方案是选择犹他州的,有2个方案是可以选择洛杉矶机房的。CPU内存SSD硬盘配置流量价格...

classcastexception为你推荐
dnf装备代码DNF红眼装备代码动态图片格式动态图片是什么格式?flash实例Flash元件和实例的概念及关系?网络安全密钥一般路由器是网络安全密钥是多少selectintooracle有select into临时表的用法吗医院排队系统请问医院采血排队的设备系统是独立的吗?动画分镜头脚本经典动画片分镜头脚本yui3YUI最详细的资料particular教程如何用AE做出花瓣从身体变出来的特效particular教程怎样做ae粒子云效果
域名注册中心 域名查询工具 免费国际域名 景安vps webhostingpad 国外服务器 正版win8.1升级win10 线路工具 警告本网站 网盘申请 商务主机 京东商城双十一活动 灵动鬼影 adroit 中国电信测速网 傲盾官网 江苏双线服务器 安徽双线服务器 国内域名 注册阿里云邮箱 更多