我正在使用parse.com Android SDK。我有一个表Foo,其中包含指向表Bar的指针,以及扩展ParseObject的类Foo和Bar。在Foo,我有这个方法:
public void getBar(final GetCallback<Bar> callback){
getParseObject("bar").fetchIfNeededInBackground(callback);
}
这是我得到的错误:
java.lang.ClassCastException: com.parse.ParseObject cannot be cast to com.package.Bar
getParseObject
返回一个ParseObject,但fetchIfNeededInBackground
不会返回子类,只返回ParseObject。文档描述如下:
public final <T extends ParseObject> void fetchIfNeededInBackground(GetCallback<T> callback)
对我而言,这似乎表明它将根据您传入的回调对象的类型返回ParseObject的子类。另一方面,fetch
说:
public <T extends ParseObject> T fetch()
我不知道如何为该方法提供子类型。我是否需要在fetch
的实例上调用Bar
方法才能使其正常工作?如果是这样,我如何从Bar
获得Foo
?我想我可以打电话给getParseObject
,创建一个新的Bar
,然后将值从一个复制到另一个,但这真的很糟糕,我希望每次看到我都不需要洗澡这段代码。
答案 0 :(得分:1)
我以不同的方式进行操作,然后解析给了我一个更有用的错误消息:Bar
子类未注册。因此,如果您无法弄清楚为什么不能投射到您的子类,请确保它已注册,因为该例外可能不会将其作为原因。