簡體   English   中英

子類化ParseObject子類(Android)

[英]Subclassing a ParseObject Subclass (Android)

是否可以ParseObject的子類? 我按照這里的指示行事 我的班級看起來像這樣:

@ParseClassName("Stove")
public class Stove extends ParseObject{

  private String URL = "url";
  private String BRAND_NAME = "brand name";

  public Stove() {
    //Needed for Parse
  }

  public Stove(String url, String brandName) {
    put(URL, url);
    put(BRAND_NAME, brandName);
  }

  public String getUrl() {
    return getString(URL);
  }

  public String getBrandName() {
    return getString(BRAND_NAME);
  }
  ...
}

我有一個看起來像這樣的子類

@ParseClassName("ElectricStove")
public class ElectricStove extends Stove{
  public ElectricStove() {
  }

  public ElectricStove(String url, String brandName) {
    super(url, brandName);
  }
  ...
}

我的Application子類在AndroidManifest.xml注冊,並在onCreate()包含此代碼:

ParseObject.registerSubclass(Stove.class);
ParseObject.registerSubclass(ElectricStove.class);
...
Parse.initialize(this, "<lots of letters>", "<more letters>");
ParseInstallation.getCurrentInstallation().saveInBackground();

我得到了這個例外

Caused by: java.lang.IllegalArgumentException: You must register this ParseObject subclass before instantiating it.
at com.parse.ParseObject.<init>(ParseObject.java:363)
at com.parse.ParseObject.<init>(ParseObject.java:324)
at <package>.Stove.<init>(Stove.java:16)
at <package>.ElectricStove.<init>(ElectricStove.java:7)

這讓我想知道我是否會以錯誤的方式解決這個問題,或者是否可能根本不可能。

目前這是不可能的,因為Parse Android SDK不支持此功能。 相反,作為建議,使用標識符來指定特定爐灶對象的“爐灶”類型。 舉個例子:

@ParseClassName("Instrument")
public class Instrument extends ParseObject {
    public Instrument() {
    // A default constructor is required.
    }

    public InstrumentType getType() {
        return InstrumentType.parse(getString("type"));
    }
    public void setType(InstrumentType type) {
        put("type", type.toString());
    }

然后使用:

final Instrument ocarina = new Instrument();

// Since our Instruments are strongly-typed, we can provide mutators that only take
// specific types, such as Strings, ParseUsers, or enum types.
ocarina.setType(InstrumentType.WOODWIND);

這將是一種解決方法,允許您根據對象的類型對對象執行操作。 它並不完美,但它可能適合您的需求。 InstrumentType只是用於靜態常量的類,以便訪問id值

這里取的例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM