360SDN.COM

首页/Redis/列表

使用redis时出现java.util.ArrayList cannot be cast to java.lang.Long

来源:  2019-04-11 14:03:51    评论:0点击:

Redis 服务器没有启动导致的错误:java.lang.ClassCastException: [B cannot be cast to java.lang.Long


一开始没什么问题 突然间程序跑不动了。看了一下是Redis服务器的问题,Redis没有连接上 ,重新启动Redis 即可
 

jedis 出现java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long


问题:使用jedis出现java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long

解决办法


java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long
    at redis.clients.jedis.Connection.getIntegerReply(Connection.java:222)
    at redis.clients.jedis.Jedis.exists(Jedis.java:127)
    at redis.clients.jedis.ShardedJedis.exists(ShardedJedis.java:70)

jedis没有关掉导致下次读取来的数据前面还夹杂着上次操作的数据,导致jedis内部无法正确解析成期望的类型。


Entry.getValue() 返回的并不是单个字符串,而是数组。
所以以下代码将抛出:
[Ljava.lang.String; cannot be cast to java.lang.String

    if(obj instanceof Entry){  
      String param = (String)((Entry)obj).getValue();  
      System.out.println("是的!\t"+param);  
    }  



需修改为:
    if(obj instanceof Entry){  
        String [] param = (String [])((Entry)obj).getValue();  
        System.out.println("是的!\t"+param[0]);  
    }  



注:[Ljava.lang.String@1b634e7  --
   "[" 表示一维数组
    "[["表示二维数组
    "L"表示一个对象
    "java.lang.String"表示对象的类型
    "@"后面表示该对象的HashCode

 

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权