繁体   English   中英

使用 Java ClassCastException 时? 延伸

[英]Java ClassCastException when using ? extends

我得到了一个获取这种类型参数的方法:

NSArray<? extends FIRQueryDocumentSnapshot>

现在,当我取这个数组的一个元素时,我得到一个ClassCastException 我的方法:

public static List<AbstractWrapper> getWrapperList(Class<? extends IAbstractWrapper> wrapper, NSArray<? extends FIRQueryDocumentSnapshot> documentSnapshotArray){
        List<AbstractWrapper> results = new ArrayList();
        for(int i=0; i<documentSnapshotArray.size(); i++){
            FIRQueryDocumentSnapshot doc = documentSnapshotArray.get(i);
            results.add(getWrapper(wrapper,doc));
        }
        return results;
    }

第 4 行中的错误

java.lang.ClassCastException:apple.NSObject 无法转换为 org.moe.binding.firebasefirestore.FIRQueryDocumentSnapshot

这可能是因为您从documentSnapshotArray.get(i)获取的对象无法转换为FIRQueryDocumentSnapshot ,请通过以下方式验证

System.out.println(documentSnapshotArray.get(i) instanceof FIRQueryDocumentSnapshot);  
// if true problem is something else but, 
// if false then object you are getting is not a type of FIRQueryDocumentSnapshot  

解决这个问题是:-

  • 如果您得到的对象不是 FIRQueryDocumentSnapshot 类型,那么您应该修复生成 documentSnapshotArray 的代码,并确保您放入 documentSnapshotArray 的每个元素都应该是 (IS-A) FIRQueryDocumentSnapshot 类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM