Ce TD à pour but de comprendre l'intérêt de la réflexion et des annotations.
On souhaite écrire un code qui permet d'afficher un objet au format
JSON, par exemple pour la classe
Person:
On peut écrire la méthode
toJSON qui prend en paramètre une
Person
et renvoie une chaîne de caractères au format
JSON:
public static String toJSON(Person person) {
return
"{\n" +
" \"firstName\": \"" + person.getFirstName() + "\"\n" +
" \"lastName\": \"" + person.getLastName() + "\"\n" +
"}\n";
}
Mais supposons que nous ayons envie d'écrire un méthode
toJSON qui prend en paramètre un
Alien et qui fait la même chose, nous allons dupliquer du code (dans la classe
Main.
Et si l'on doit dupliquer le code de
toJSON à chaque fois que l'on veut
transformer en
JSON une nouvelle classe, c'est embêtant...
A kitten dies each time you duplicate a bug !
Pour éviter l'hécatombe, on se propose d'écrire une seule méthode
toJSON
prenant un
Object en paramètre et utilisant la réflexion (
reflection en anglais) pour trouver les propriétés à écrire au format
JSON.