【发布时间】:2017-09-23 00:06:49
【问题描述】:
你有一个抽象的通用类“ArticleOrdered”和一个子类“DrinkOrdered”(参见下面的类声明代码)。如果我创建了一个 DrinkOrdered 对象并将其保存在 Firebase 中,我没有问题。 当我尝试执行时:
DrinkOrdered test = dataSnapshot.getValue(DrinkOrdered.class);
要得到对象,我有
java.lang.IllegalStateException: Could not resolve type T
ArticleOrdered 类:
public abstract class ArticleOrdered<T extends Article> {
private int quantity;
private T article;
private String note;
private double price;
public ArticleOrdered(int quantity, T article, String note) {
this.quantity = quantity;
this.article = article;
this.note = note;
this.price = article.getPrice();
}
public ArticleOrdered() {
//FIREBASE CONSTUCTOR
}
public T getArticle() {
return article;
}
public void setArticle(T article) {
this.article = article;
}
...
DrinkOrdered 类:
public class DrinkOrdered extends ArticleOrdered<Drink> {
public DrinkOrdered(int quantity, Drink article, String note) {
super(quantity, article, note);
}
public DrinkOrdered() {
//FIREBASE CONSTRUCTOR
}
我还有另一堂课“PizzaOrdered”(但现在不重要了)
TestActivity 代码:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference orderRef = db.getReference("prova");
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DrinkOrdered a = dataSnapshot.getValue(DrinkOrdered.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("PIERF", "onCancelled");
}
};
orderRef.addListenerForSingleValueEvent(listener);
以这种方式声明它们是否正确?抱歉英语不好。
【问题讨论】:
标签: android firebase firebase-realtime-database