Firebase POJO 无法正常工作,无法识别我尝试投射到的 class
Firebase POJO not working, not recognizing class that I am try to cast to
当我运行下面的代码时,我得到以下错误:
com.google.firebase.database.DatabaseException: Class java.util.HashMap has generic type parameters, please use GenericTypeIndicator instead.
seniorRef.orderByChild("seniorID").equalTo(caretaker.getSeniorID())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()) {
Log.d("senior", data.toString());
Senior senior = data.getValue(Senior.class);
seniorBox.setText(senior.getFirstName() + " " + senior.getLastName());
caretasks(senior);
}
}
奇怪的是这段代码在很长一段时间内都运行良好,我对高级 class(下图)进行了一些我目前正在处理的内容的小改动。当我昨晚取得一些进展时它正在工作,但现在它拒绝将它从 HashMap 转换为 Senior。如果我尝试将其转换为 (Senior) data.getValue(),它会抛出类型转换错误。请让我知道我做错了什么。
public class Senior implements Serializable {
private String seniorID;
private String firstName;
private String lastName;
private String address;
private HashMap<String, HashMap> activities;
public Senior (){}
...
}
编辑:还值得一提的是,我还有另一个 class 对同一对象进行完全相同的查询,效果很好。
这是因为您的 HashMap
没有 generic type parameters
。 <String, Object>
不见了。所以为了解决这个问题,你需要改变这一行:
private HashMap<String, HashMap> activities;
这一行:
private Map<String, Map<String, Object>> activities;
现在您可以相应地获取数据了。
希望对您有所帮助。
当我运行下面的代码时,我得到以下错误:
com.google.firebase.database.DatabaseException: Class java.util.HashMap has generic type parameters, please use GenericTypeIndicator instead.
seniorRef.orderByChild("seniorID").equalTo(caretaker.getSeniorID())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()) {
Log.d("senior", data.toString());
Senior senior = data.getValue(Senior.class);
seniorBox.setText(senior.getFirstName() + " " + senior.getLastName());
caretasks(senior);
}
}
奇怪的是这段代码在很长一段时间内都运行良好,我对高级 class(下图)进行了一些我目前正在处理的内容的小改动。当我昨晚取得一些进展时它正在工作,但现在它拒绝将它从 HashMap 转换为 Senior。如果我尝试将其转换为 (Senior) data.getValue(),它会抛出类型转换错误。请让我知道我做错了什么。
public class Senior implements Serializable {
private String seniorID;
private String firstName;
private String lastName;
private String address;
private HashMap<String, HashMap> activities;
public Senior (){}
...
}
编辑:还值得一提的是,我还有另一个 class 对同一对象进行完全相同的查询,效果很好。
这是因为您的 HashMap
没有 generic type parameters
。 <String, Object>
不见了。所以为了解决这个问题,你需要改变这一行:
private HashMap<String, HashMap> activities;
这一行:
private Map<String, Map<String, Object>> activities;
现在您可以相应地获取数据了。
希望对您有所帮助。