gpt4 book ai didi

java - 迭代 DataSnapshot 时出现 Firebase ClassCastException

转载 作者:行者123 更新时间:2023-12-01 16:47:06 25 4
gpt4 key购买 nike

我正在尝试向网站 they recomend to post a question here instead 中的 Firebase 团队报告错误.

我正在使用最新的 Java SDK 来监听节点更改事件。迭代 DataSnapshot 对象时出现以下异常

请注意,错误发生在库内部,而不是在我的代码中。

代码:

        void printData(DataSnapshot data) {
System.out.println(data.getName() + ":" + data.getValue());
Iterator<DataSnapshot> it = data.getChildren().iterator();
while (it.hasNext()) {
DataSnapshot dataSnapshot = (DataSnapshot) it.next();
printData(dataSnapshot);
}
}

数据:

onChildAdded
-e42170ec-a44f-4dcf-9d18-76a39165cea7:{ts=1405260544422, rating=2}
--rating:2

异常堆栈跟踪:

Exception in thread "FirebaseEventTarget" java.lang.ClassCastException: com.firebase.client.snapshot.LongNode cannot be cast to com.firebase.client.snapshot.ChildrenNode
at com.firebase.client.DataSnapshot.getChildren(DataSnapshot.java:273)
at Read$1.printData(Read.java:54)
at Read$1.onChildAdded(Read.java:39)
at com.firebase.client.core.ChildListenerContainer$1.run(ChildListenerContainer.java:49)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)

最佳答案

感谢您的报告!抱歉,看起来这确实是一个错误,它应该返回一个空迭代器而不是抛出异常。我将在客户端的下一个版本中修复该问题。关注 @FirebaseRelease有关客户端版本的通知。

同时,您可以通过在使用 hasChildren() 方法调用 getChildren() 之前首先检查 DataSnapshot 实例是否有子级来防止这种情况。所以你的 printData 方法可能看起来像这样:

    void printData(DataSnapshot data) {
System.out.println(data.getName() + ":" + data.getValue());
if (data.hasChildren()) {
Iterator<DataSnapshot> it = data.getChildren().iterator();
while (it.hasNext()) {
DataSnapshot dataSnapshot = (DataSnapshot) it.next();
printData(dataSnapshot);
}
}
}

关于java - 迭代 DataSnapshot 时出现 Firebase ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24723900/

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