Usando o Parcel para clonar um objeto?

Eu tenho uma classe que implementou Parcelable. Posso fazer algo como o seguinte para criar uma nova instância de uma classe ?:

Foo foo = new Foo("a", "b", "c");

Parcel parcel = Parcel.obtain();
foo.writeToParcel(parcel, 0);
Foo foo2 = Foo.CREATOR.createFromParcel(parcel);

Eu gostaria que foo2 fosse um clone de foo.

---------------------- atualização --------------------------- ----

O exemplo acima não funciona (todos os membros do Foo são nulos em nova instância). Estou passando Foos entre as atividades, então a interface Parcelable é implementada ok. Usando o abaixo que funciona:

Foo foo1 = new Foo("a", "b", "c");
Parcel p1 = Parcel.obtain();
Parcel p2 = Parcel.obtain();
byte[] bytes = null;

p1.writeValue(foo1);
bytes = p1.marshall();

p2.unmarshall(bytes, 0, bytes.length);
p2.setDataPosition(0);
Foo foo2 = (Foo)p2.readValue(Foo.class.getClassLoader());

p1.recycle();
p2.recycle();

// foo2 is the same as foo1.

encontrou isso das seguintes q:Como usar o Parcel no Android?

Isso está funcionando bem, eu posso ir com isso, mas é um código extra, não tenho certeza se há uma maneira mais curta de fazer isso (além de implementar corretamente um construtor de cópia ...).

obrigado

questionAnswers(3)

yourAnswerToTheQuestion