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ドキュメントでは、プロパティを設定するためのパラメータ化されたコンストラクタが表示されます。
Google変換が同じBeanオブジェクトで終了した後にコードを追加するにはどうすればよいですか?
私はプロパティとデフォルトのコンストラクタにプライベートアクセス修飾子を添付し、Beanクラスにはセッターメソッドがありませんが、firebaseはfirstNameとlastNameの値を埋めます。 –
設定者がいない場合、FirebaseはJSONプロパティに一致するフィールドを見つけようとし、そこに直接値を設定します。 –