SubClass ParseObject无法解析方法

时间:2016-01-26 23:31:55

标签: android android-studio parse-platform

我正在尝试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);

1 个答案:

答案 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,在这种情况下你不想这样做