我试图将DataSnapshot值转换为对象。它的工作正常,我相信用于转换的bean构造函数(带参数)。我添加了一些代码行来执行某些操作,但我添加的代码行从未得到执行。样品bean类:Firebase实时数据库DataSnapshot值到对象转换
@IgnoreExtraProperties
public class DatabaseRecord {
private String firstName;
private String lastName;
private String fullName;
private DatabaseRecord() {
}
public DatabaseRecord(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
// following code not executing
this.fullName = firstName + lastName;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getFullName() { return fullName; }
}
取数据执行代码:
DatabaseReference databaseReference = database.getReference("/user/user1");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DatabaseRecord record = dataSnapshot.getValue(DatabaseRecord.class);
Log.d(TAG, record.getFirstName()+":"+record.getLastName()+":"+record.getFullName());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
输出:
萨蒂什:潘迪:空
谷歌文档显示参数化的构造函数来设置属性,如果这是为什么不是我的代码执行?
如何在Google转换完成后在同一个bean对象中追加我的代码?
我重视私人的访问修饰符属性和默认的构造函数,并没有在我的bean类的setter方法,但对于火力firstName和lastName填充值。 –
如果没有setter,Firebase会尝试查找与JSON属性匹配的字段并直接在该字段中设置值。 –