firebase datasnapshot.getValue(subclass.class)函数永远不会返回



我试图从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中启用对象,请不要忘记写一个空的构造函数。我只有带有参数的构造函数,然后我在子类中添加了空参数构造函数。

最新更新