簡體   English   中英

無需getter和setter的Android Parcelable實現

[英]Android Parcelable implemenation without getters and setters

在android開發人員文檔中,避免使用getter和setter方法。Android Performance Pattern如何創建Parcelable實現的模型類?

在android開發人員文檔中避免使用getter和setter的Android Performance Pattern

不,不是的。 關於getter和setter的部分標題為“避免內部 getter / setter” (添加了重點)。 它是指在類內部使用getter和setter,而不是字段訪問。 它並不建議一般應避免使用吸氣劑和吸氣劑。

如何創建Parcelable實現的模型類?

您可以通過以下方式創建所有Parcelable

  • implements Parcelable添加到類定義
  • 實現writeToParcel()
  • 實現describeContents()
  • 添加CREATOR static字段

這些都與吸氣劑或吸氣劑無關。 所述MyParcelable所示示例類JavaDocs獲得Parcelable不使用的吸氣劑或用於一個setter mData字段。

同樣,使用parcelabler.com ,這里是Parcelable實施的Chair

public class Chair implements Parcelable {
  private String material;
  private int numLegs;

    protected Chair(Parcel in) {
        material = in.readString();
        numLegs = in.readInt();
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(material);
        dest.writeInt(numLegs);
    }

    @SuppressWarnings("unused")
    public static final Parcelable.Creator<Chair> CREATOR = new Parcelable.Creator<Chair>() {
        @Override
        public Chair createFromParcel(Parcel in) {
            return new Chair(in);
        }

        @Override
        public Chair[] newArray(int size) {
            return new Chair[size];
        }
    };
}

它還不使用getter或setter。

您只需要直接將值分配給變量即可。

  private String item1;
  private String item2; 

 public ClassName(String item1, String item2) {
        this.item1 = item1;
        this.item2 = item2;
    }

    protected ClassName(Parcel in) {
        this.item1 = in.readString();
        this.item2 = in.readString();
    }

 @Override
    public int describeContents() { return 0; }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.item1);
        dest.writeString(this.item2);
    }


    public static final Creator<ClassName> CREATOR = new Creator<ClassName>() {
        @Override
        public ClassName createFromParcel(Parcel source) {return new ClassName(source);}

        @Override
        public ClassName[] newArray(int size) {return new ClassName[size];}
    };

暫無
暫無

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

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