我正在尝试SubClass一个ParseObject,这似乎工作正常,但方法无法解决。 Android Studio似乎能够找到这个类 - 至少IDE链接回原来的类PhotoSession,它只是找不到方法而且我得到了一个无法解决的方法错误。
import com.parse.ParseClassName;
import com.parse.ParseObject;
@ParseClassName("PhotoSession")
public class PhotoSession extends ParseObject {
public PhotoSession() {
}
public void setDisplayName(String value) {
put("displayName", value);
}
}
从另一个类创建PhotoSession对象:
private void createNewSession() {
ParseUser user = ParseUser.getCurrentUser();
ParseObject photoSession = new PhotoSession();
photoSession.setDisplayName("test session");
}
我在Parse.initialize(...)之前在Application类中注册了类,如下所示:
ParseObject.registerSubclass(PhotoSession.class);
答案 0 :(得分:2)
仔细观察:
private void createNewSession() {
ParseUser user = ParseUser.getCurrentUser();
ParseObject photoSession = new PhotoSession();
photoSession.setDisplayName("test session");
}
问题在于这一行:
ParseObject photoSession = new PhotoSession();
您正在创建一个新的PhotoSession对象,但类型为ParseObject。改为使用PhotoSession类型创建它:
PhotoSession photoSession = new PhotoSession();
由于PhotoSession是ParseObject的子类,因此将新的PhotoSession声明为ParseObject类型是有效的。但是,你并不想要这样,因为它将它转换为它的父类,它删除了PhotoSession对象中存在的任何特定方法。这称为upcasting,在这种情况下你不想这样做