Parfois nous devons exécuter un traitement et si le résultat est
null
nous voulons renvoyer un résultat par défaut. par exemple une
liste vide. cela permet d'éviter les NullPointerException
s si nous
parcourons la liste. Exemple :
List<Contact> contacts = getContacts(); for (Contact contact : contacts){ contact.setActive(true); }
Si getContacts()
renvoie null
le code renverra une
NullPointerException
. il est possible avec les
génériques
Java de le faire d'une manière élégante :
public static <T> T notNull(T test, T defaultvalue){ return t == null ? test : defaultValue; }
On peut alors écrire :
List<Contact> contacts = notNull(getContacts(),new ArrayList<Contact>);
Ce code n'est pas révolutionnaire mais il montre à quel point les génériques de de Java peuvent être utiles. C'est d'ailleurs de cette manière que EasyMock fonctionne. Lorsque vous écrivez
Myclass mock = EasyMock.createMock(MyClass.class); EasyMock.expect(mock.function()).andReturn(value);
Le type de value
est déterminé en générique Java par le retour
de function()
:
public <O> O expect(O t) { return t; }