Firebase:类 java.util.List 具有泛型类型参数

Posted

技术标签:

【中文标题】Firebase:类 java.util.List 具有泛型类型参数【英文标题】:Firebase: Class java.util.List has generic type parameters 【发布时间】:2018-04-16 16:18:01 【问题描述】:

我正在为我的 android 应用程序使用 firebase,并将我自己的用户对象存储在数据库中。但是,每当我尝试从数据库中的信息创建用户对象时,都会出现以下错误:

com.google.firebase.database.DatabaseException: Class java.util.List has generic type parameters, please use GenericTypeIndicator instead
        at com.google.android.gms.internal.zzear.zzb(Unknown Source)
        at com.google.android.gms.internal.zzear.zza(Unknown Source)
        at com.google.android.gms.internal.zzear.zza(Unknown Source)
        at com.google.android.gms.internal.zzear.zzb(Unknown Source)
        at com.google.android.gms.internal.zzeas.zze(Unknown Source)
        at com.google.android.gms.internal.zzear.zzb(Unknown Source)
        at com.google.android.gms.internal.zzear.zza(Unknown Source)
        at com.google.android.gms.internal.zzear.zza(Unknown Source)
        at com.google.android.gms.internal.zzear.zza(Unknown Source)
        at com.google.android.gms.internal.zzear.zzb(Unknown Source)
        at com.google.android.gms.internal.zzeas.zze(Unknown Source)
        at com.google.android.gms.internal.zzear.zzb(Unknown Source)
        at com.google.android.gms.internal.zzear.zza(Unknown Source)
        at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
        at christophershae.stats.CreateRoster$1.onDataChange(CreateRoster.java:88)
        at com.google.android.gms.internal.zzduz.zza(Unknown Source)
        at com.google.android.gms.internal.zzdwu.zzbvb(Unknown Source)
        at com.google.android.gms.internal.zzdxa.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7325)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

这是我的用户类:

public class User implements Serializable 
    public String email;

    public Map<String, List<BasketballPlayer>> userRosters = new 
   HashMap<String, List<BasketballPlayer>>();


    public User()

    

    public User(String email)
        this.email = email;
    


这是我试图创建新对象的代码:

@Override
public void onDataChange(DataSnapshot dataSnapshot) 
    user = dataSnapshot.child(userId).getValue(User.class);


【问题讨论】:

@Frank van 我在使用 toObject 进行转换时在我的 firestore 对象中有一个 hashkey,它给了我 Class java.util.Map 具有泛型类型参数,请改用 GenericTypeIndicator。此问题发生在已签名的 apk 中,而不是在调试中。 【参考方案1】:

改变这个:-

user = dataSnapshot.child(userId).getValue(User.class);

进入这个:-

List<BasketBallPlayer> retrievedata=dataSnapshot.child(userId).getValue(userRosters);

【讨论】:

以上是关于Firebase:类 java.util.List 具有泛型类型参数的主要内容,如果未能解决你的问题,请参考以下文章

java基础随笔12

10.27

Scala error: type mismatch; found : java.util.List[?0] required: java.util.List[B]

Java之List

java list的重复对象怎么去除

Java进阶--List接口