我有一个名为" Car"的班级模特。 如果我想创建一个新的对象" Car"我可以这样做:
Car car = new Car();
但是现在,我让这个类实现了Parcelable。创建班级新对象的最佳方式是什么?#34; Car"?
现在我这样做:
Car car = new Car("blue");
我正在为我的模型类添加一个新的构造函数:
public class Car implements Parcelable {
public String color;
@Override
public int describeContents() { return 0; }
@Override
public void writeToParcel(Parcel dest, int flags) { dest.writeString(color); }
public static final Creator<Car> CREATOR = new Creator<Car>() {
public Car createFromParcel(Parcel in) { return new Car(in); }
public Car[] newArray(int size) { return new Car[size]; }
};
private Car(Parcel in) { color = in.readString(); }
public Car(String myColor) { color = myColor; }
}
由于我是本课程的新手Parcelable,我不确定这是否是最好的方法。在班上有两个构造函数有什么不好吗?还有其他更有效的方法吗?
我担心在我的应用程序中添加第二个构造函数会在创建此类的新对象时失去一些性能。
答案 0 :(得分:4)
由于我是这类Parcelable的新手,我不确定这是不是最好的方法。在班上有两个构造函数有什么不好吗?还有其他更有效的方法吗?
这取决于你需要什么,但是你的parcelable patters的实现似乎很好。
如果你需要通过意图或参数包有效地传递你的对象,那么这是最好的方法。 Parcelable是android更高效的类序列化实现。
如果你想要的不那么优化(但更容易)你可以使用serializable,这是默认的java approch,它有点慢,并且有自己的缺点^^。
如果对你来说更重要的是生成状态的可读性(parcelable和serializable将从你的对象产生一个字节流),你可能想要使用Json转换(为此我会建议gson。
我担心在我的应用程序中添加第二个构造函数会在创建此类的新对象时失去一些性能。
多个构造函数没有任何问题。它们只是一种初始化对象状态的方法。更不用说了。
PS:对于您创建汽车的旧方法:
Car car = new Car();
只需添加空构造函数:
public Car() { }
干杯。