我試圖將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屬性匹配的字段並直接在該字段中設置值。 –