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

博鳌云¥799/月,香港110Mbps(含10M CN2)大带宽独立服务器/E3/8G内存/240G/500G SSD或1T HDD

博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...

CloudCone,美国洛杉矶独立服务器特价优惠,美国洛杉矶MC机房,100Mbps带宽不限流量,可选G口,E3-1270 v2处理器32G内存1Gbps带宽,69美元/月

今天CloudCone发布了最新的消息,推送了几款特价独立服务器/杜甫产品,美国洛杉矶MC机房,分配100Mbps带宽不限流量,可以选择G口限制流量计划方案,存储分配的比较大,选择HDD硬盘的话2TB起,MC机房到大陆地区线路还不错,有需要美国特价独立服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2...

快云科技,免云服务器75折优惠服务器快云21元/月

近日快云科技发布了最新的夏季优惠促销活动,主要针对旗下的香港CN2 GIA系列的VPS云服务器产品推送的最新的75折优惠码,国内回程三网CN2 GIA,平均延迟50ms以下,硬件配置方面采用E5 2696v2、E5 2696V4 铂金Platinum等,基于KVM虚拟架构,采用SSD硬盘存储,RAID10阵列保障数据安全,有需要香港免备案CN2服务器的朋友可以关注一下。快云科技怎么样?快云科技好不...

classcastexception为你推荐
视频托管如何把视频上传到自己公司的网站上?求解···listviewitem安卓如何添加Listview的item?国家法规数据库哪一数据库包含中国国家标准,涉及科学研究,社会管理以及工农业生产的各个领公众号付费阅读怎么利用公众号做知识付费?无处不在的意思人山无处不花枝的意思是什么shoujiao黑鲨手机SKW一AO怎么解锁?java程序员招聘★JAVA软件工程师工资待遇怎样彩信平台请问彩信平台升级怎么改参数能告诉我具体步骤吗?空间导航QQ空间中如何自定义导航?backupexecBackup Exec 2014怎么备份Exchange
yaokan永久域名经常更换 上海服务器租用 老左 企业主机 服务器cpu性能排行 三拼域名 七夕快乐英文 免费申请个人网站 国外视频网站有哪些 360云服务 联通网站 1元域名 阿里云官方网站 丽萨 tracker服务器 香港ip privatetracker 删除域名 中国最年轻博士 百度空间登陆首页 更多