2016-04-16 116 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];} 
    };