Les génériques java et EasyMock
Par Masclet 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 NullPointerExceptions 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;
}