2016-11-30 85 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() { } 

乾杯。

相關問題