La plupart des code de sérialisation que j'ai vu utilise des indicateurs pour indiquer la présence ou l'absence d'une valeur OU précède la valeur avec un nombre de champ (par exemple, lors de l'écriture de tableaux) où le champ count est mise à zéro si la valeur n'existe pas du tout.
En examinant le code source d'Android de base des classes révèle code comme ceci (à partir de la classe de Message):
if (obj != null) {
try {
Parcelable p = (Parcelable)obj;
dest.writeInt(1);
dest.writeParcelable(p, flags);
} catch (ClassCastException e) {
throw new RuntimeException(
"Can't marshal non-Parcelable objects across processes.");
}
} else {
dest.writeInt(0);
}
ou ce (à partir de l'Intention de la classe):
if (mCategories != null) {
out.writeInt(mCategories.size());
for (String category : mCategories) {
out.writeString(category);
}
} else {
out.writeInt(0);
}
Ma suggestion: Dans votre code, si il n'y a pas de différence fonctionnelle entre "zoom == null" et "zoom == 0", alors que je vient de déclarer zoom primitive (int
au lieu de Integer
) OU l'initialiser à zéro dans le constructeur et de s'assurer que vous n'avez jamais mis à null (alors vous pouvez être assuré qu'il ne sera jamais nulle, et vous n'aurez pas à ajouter un code spécial pour votre sérialisation/désérialisation des méthodes).