Les génériques java et EasyMock
Par MD3804-GANDI le jeudi 21 octobre 2010, 21:42 - Java / J2EE - Lien permanent
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; }