繁体   English   中英

Firebase android hashmap 整数值变成 Long

[英]Firebase android hashmap integer value turned into Long

 changeweek = (Map<String,ArrayList<Integer>>)dataSnapshot.child("week").getValue();
                    ArrayList<Integer> test = changeweek.get("Monday");
                    Log.d("changeweek",changeweek.toString());
                    int j = test.get(2);

我在最后一行收到如下错误:

java.lang.ClassCastException: java.lang.Long 无法转换为 com.example.fake9.tendee.ScheduleActivity$1$1.onDataChange(ScheduleActivity.java:107) 处的 java.lang.Integer

我不知道这是怎么发生的,因为我将整数数组列表存储到哈希图中。 下面是数据库的图片。

在此处输入图像描述

Firebase SDK 在内部将所有类似整数的数值存储为 Long 值,无论您是否需要。 这有助于防止可能非常大的数字作为值。

您对具有 Integer 类型值的 Map 的强制转换会覆盖它,然后在类型不匹配时导致运行时出现问题。 您可以通过简单地将您的值类型从 Integer 更改为 Long 来更正此问题。

与其直接将long 转换为 int ,不如使用String.valueOf()将 long 转换为字符串,然后我们可以使用Integer.parseInt()轻松地将字符串值转换为int

所以你可以这样做,

**

int j = Integer.parseInt(String.valueOf(test.get(2)));

**

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM