为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.ClassCastException:从 Firebase 检索数据时

java.lang.ClassCastException:从 Firebase 检索数据时

鸿蒙传说 2021-09-15 17:14:46
我的 Firebase 实时数据库中有十进制数,但是当我检索到长值时。这是一个错误java.lang.ClassCastException: java.lang.Double 不能转换为 java.lang.Long然后,我尝试将代码更改为 double。但它会出现错误,例如:java.lang.ClassCastException: java.lang.Long 不能转换为 java.lang.Double但是,当我将 Firebase 中的值更改为整数 ex: 70 时,它表现良好并显示 70.0 与 long 值。这是我的数据库Java类 nilaiRef.child(keys).addValueEventListener(new ValueEventListener() {            @Override            public void onDataChange(DataSnapshot dataSnapshot) {                listNilai.clear();                if(dataSnapshot.exists()){                    for(DataSnapshot dataHasil : dataSnapshot.getChildren()){                        final long nilai_temp = (long) dataHasil.child(users.getUid()).getValue(); ======ERROR HERE=====                        nilaiInfoRef.child(keys).child(dataHasil.getKey()).addValueEventListener(new ValueEventListener() {                            @Override                            public void onDataChange(DataSnapshot dataSnapshot) {                                if(dataSnapshot.exists()){                                    NilaiMatakuliah nilai = dataSnapshot.getValue(NilaiMatakuliah.class);                                    nilai.setNilai(nilai_temp);                                    listNilai.add(nilai);                                    mAdapter.notifyDataSetChanged();                                    Log.e("nilais","1 "+nilai.getNilai());                                    Log.e("nilais","2 "+nilai.getNama());                                    Log.e("nilais","3 "+nilai.getSkala());                                    Log.e("nilais","4 "+nilai.getBobot());                                }
查看完整描述

2 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

看着你的数据库,你有两种类型的数据Longdouble,我会推荐的第一件事是,当你将数据推送到数据库,你应该将所有的值增加一倍,即把他们与.0他们是否long

如果这是不可能的,您可以随时进行转换,假设您的值将在 double 范围内,您可以这样做:

final double nilai_temp = (double) dataHasil.child(users.getUid()).getValue();

注意:double对于 small d,您不能使用Double(with capital D)以这种方式进行转换。


查看完整回答
反对 回复 2021-09-15
?
FFIVE

TA贡献1797条经验 获得超6个赞

也许你可以使用 java.lang.Long 的内置方法?

public double doubleValue()

然后实例化一个新的 java.lang.Double 如果你想保留它作为一个对象?

Double myDouble = new Double (nilaiRef.doubleValue()) ;

doubleValue() 中为您完成了转换。


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信