我试图从firebase获得价值,以供"卖家"one_answers"客户"的两个不同的孩子。而且,这些孩子也有孩子的卖方或客户的身份证。
卖方和客户是用户类的子类,我已经实施了所有设定器和geters。这是我的代码,无法从数据库中获取值:
public class DatabaseWrapper {
private final static DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
private final static DatabaseReference usersRef = ref.child("users");
private final static DatabaseReference productsRef = ref.child("products");
private static Object retrieverObject = null;
public static User getUser(String type, String id) throws InterruptedException {
CountDownLatch done = new CountDownLatch(1);
usersRef.child(type).child(id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Never returns getValue(Subclass.class)
if (type.equals("customers"))
retrieverObject = dataSnapshot.getValue(Customer.class);
else
retrieverObject = dataSnapshot.getValue(Seller.class);
done.countDown();
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
done.await();
return (User)retrieverObject;
}
我故意使其同步代码以查看问题。如果我使用getValue(User.class)
代替getValue(Customer.class)
和getValue(Seller.class)
,则可以使用,但是此用法显然无法获得子类中的字段。因此,问题是如何从Firebase检索子类项目?
[已解决]
谁有类似的问题,可以从firebase中启用对象,请不要忘记写一个空的构造函数。我只有带有参数的构造函数,然后我在子类中添加了空参数构造函数。