尝试从Firebase读取数据,但出现此错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sozluk, PID: 5798
java.lang.RuntimeException: java.lang.InstantiationException: Can't instantiate abstract class com.google.firebase.auth.FirebaseUser
我的代码:
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Word2 word= new Word2();
word.setMean(postSnapshot.child("mean").getValue(String.class)) ;
word.setName(postSnapshot.child("name").getValue(String.class));
word.setControlled(postSnapshot.child("controlled").getValue(Boolean.class));
word.setAdded_by(postSnapshot.child("added_by").getValue(FirebaseUser.class));
word.setKey(postSnapshot.child("key").getValue(String.class));
words.add(word);
}
答案 0 :(得分:1)
这行代码引起了问题:
word.setAdded_by(postSnapshot.child("added_by").getValue(FirebaseUser.class));
Firebase SDK无法反序列化FirebaseUser
类型的对象,因为如错误消息所述,它是一个抽象类。这意味着可以使用反射来创建它,这是Realtime Database SDK要做的。
您在这里没有简单的解决方法。由于它是一个抽象类,因此建议您不要在您的任何类中直接使用FirebaseUser。您可能应该只存储用户的UID字符串。