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

HostYun 新上美国CN2 GIA VPS 月15元

HostYun 商家以前是玩具主机商,这两年好像发展还挺迅速的,有点在要做点事情的味道。在前面也有多次介绍到HostYun商家新增的多款机房方案,价格相对还是比较便宜的。到目前为止,我们可以看到商家提供的VPS主机包括KVM和XEN架构,数据中心可选日本、韩国、香港和美国的多个地区机房,电信双程CN2 GIA线路,香港和日本机房,均为国内直连线路。近期,HostYun上线低价版美国CN2 GIA ...

Krypt($120/年),2vCPU/2GB/60GB SSD/3TB

Krypt这两天发布了ION平台9月份优惠信息,提供一款特选套餐年付120美元(原价$162/年),开设在洛杉矶或者圣何塞机房,支持Windows或者Linux操作系统。ion.kryptcloud.com是Krypt机房上线的云主机平台,主要提供基于KVM架构云主机产品,相对于KT主站云服务器要便宜很多,产品可选洛杉矶、圣何塞或者新加坡等地机房。洛杉矶机房CPU:2 cores内存:2GB硬盘:...

萤光云(16元/月)高防云服务器自带50G防御

螢光云官網萤光云成立于2002年,是一家自有IDC的云厂商,主打高防云服务器产品。在国内有福州、北京、上海、台湾、香港CN2节点,还有华盛顿、河内、曼谷等海外节点。萤光云的高防云服务器自带50G防御,适合高防建站、游戏高防等业务。本次萤光云中秋云活动简单无套路,直接在原有价格上砍了一大刀,最低价格16元/月,而且有没有账户限制,新老客户都可以买,就是直接满满的诚意给大家送优惠了!官网首页:www....

classcastexception为你推荐
createfile失败CreateFile失败,代码5拒绝访问(高分在线求助!!!)无处不在的意思心无所住是什么意思pat是什么格式如何把JPG图片变为PAT格式图片?netbios协议NetBIOS协议起什么作用?cursorlocationsession("rs").cursorlocation=3是什么意思?怎么查微信注册时间怎么查看自己的微信号用了多久ibooks支持什么格式iPhone4的ibooks怎么导入电子书 还有支持什么格式手机在线客服手机客服热线全峰快递官网紧急!全峰快递怎么样?mpeg4格式mp4格式有哪些??
看国外视频直播vps 域名备案中心 godaddy域名解析 smartvps locvps linode代购 gitcafe 发包服务器 godaddy域名证书 申请个人网站 200g硬盘 美国堪萨斯 免费cdn web服务器安全 免费网页空间 路由跟踪 atom处理器 阿里云邮箱登陆地址 睿云 上海联通 更多