2016-04-16 113 views

回答

1

在Android開發者文檔,以避免getter和setter的Android性能模式

不,不。 The section on getters and setters is entitled "Avoid Internal Getters/Setters"(強調添加)。它指的是在類中使用getter和setter,而不是字段訪問。它並沒有暗示一般應避免吸氣劑和吸附劑。

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

您創建所有Parcelable classes以同樣的方式:

  • 添加implements Parcelable類定義
  • 實施writeToParcel()
  • 實施describeContents()
  • 添加CREATORstatic

這與getter或setters沒有任何關係。在the JavaDocs for Parcelable中顯示的MyParcelable樣本類不會在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方法。

0

你只需要直接給變量賦值。

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];} 
    };