2016-11-30 55 views
0

我有一个名为“汽车”的类模型。 如果我想创建的“驾驶”的新对象,我可以做这样的事情:正确的方式来创建一个新的parcelable对象

Car car = new Car(); 

但现在,我做了这个类实现Parcelable。创建“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

先写干净的代码。然后优化。对我来说似乎很好。 – tynn

+0

这将是创建一个'Parcelable'的适当方式。你不会遭受任何明显的性能损失。在课堂设计中多个构造函数是很常见的。 – DeeV

+0

某些框架可能会要求您保留默认构造函数,即使它只是空的 –

回答

1

由于我是这个班级的新手,我不确定这是否是最好的答案。我班有两个构造函数是不是很糟糕?有没有其他更有效的方法来做到这一点?

这取决于你需要什么,但你的可执行模式的实现似乎是okey。

如果你需要通过意图或参数捆绑有效地传递你的对象,这是最好的方法。 Parcelable是android更高效地实现类的序列化。

如果你想稍微不理想(但更容易),你可以使用序列化,这是默认的java接近,它有点慢,并有其自身的缺点^^。

如果你更重要的是生成的状态(parcelable和序列化将会使您的对象字节流)的可读性,你可能想使用JSON皈依(为此,我建议GSON。

恐怕将这个第二个构造我的应用程序应该失去在创建这个类的新对象的某些性能。

没有什么错多个构造。他们只是以初始化对象状态的一种方式。没有更没有什么可少的了。

PS:为了您创建开车去上班的老方法:

Car car = new Car(); 

只需添加空的构造:

public Car() { } 

干杯。

相关问题