gpt4 book ai didi

引用 Firebase 时抛出 Java java.lang.ClassCastException

转载 作者:行者123 更新时间:2023-11-30 04:07:53 24 4
gpt4 key购买 nike

我对 Java 相当陌生,在解决收到的异常时遇到了困难。

首先,这是一个异常(exception):

Exception in thread "FirebaseEventTarget" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer 
at CallServer$1.onDataChange(CallServer.java:30)
at com.firebase.client.core.ValueListenerContainer$1.run(ValueListenerContainer.jav‌​a:47)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:8‌​86)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)

这是代码。

public class CallServer {
public void displayNameWeight(int adress){
// x = card name, displays card name and weight
String url = "https://dominion-randomizer.firebaseio.com/Set/Base/"
+ adress ;
Firebase referenceCard = new Firebase(url);


referenceCard.addValueEventListener(new ValueEventListener() {
@Override

public void onDataChange(DataSnapshot snap) {

Object value = snap.getValue();
/*Line 30*/ String name = (String) ((Map) value).get("name");
Long weight = (Long)((Map)value).get("weight");

System.out.println(name + "'s weight is:" + weight);

}
@Override
public void onCancelled(FirebaseError arg) {
System.err.println("oops");
}
});
}
public void writeWeight(int adress, int weight) {

String url = "https://dominion-randomizer.firebaseio.com/Set/Base/"
+ adress;
Firebase referenceCard = new Firebase(url);

System.out.println("Card ID:" + adress);

referenceCard.child("weight").setValue(weight);

}

所以我的问题是,当我使用 displayNameWeight 方法时,它可以正常运行,但是当我尝试将 writeWeight 与 displayNameWeight 结合使用时,我收到 java.lang.ClassCastException。我知道我不能将不同类型的对象组合在一起,但是我不明白为什么第一个方法可以正确运行,而第二个方法却不能。我唯一能想到的是,当我引用 Firebase url 时,对象类型以某种方式发生了变化。

很抱歉我的问题不一定连贯,我对编程很陌生。 编辑:显示第 30 行

最佳答案

不要在将其从 map 中拉出时施放重量,而是尝试将其作为对象拉出,然后检查它是什么类型。

或者,您可以执行以下操作,而不是将整个快照转换为 map :

Long weight = snap.child("weight").getValue(Long.class);

这可能更容易阅读。一般来说,我会说看一下 DataSnapshot 的文档,有几种实用方法可以使其更容易使用,而不是没有指定键和值类型的 Map:https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/DataSnapshot.html

关于引用 Firebase 时抛出 Java java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com