Bonjour à tous,

Je souhaite valider des préconditions sur les arguments de mes méthodes.
En cas d'invalidation, cela déclenche une exception Runtime.

Cela donne quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public void maMethode(Integer ageDeToto) {
    if (null == ageDeToto) throw new IllegalArgumentException("ageDeToto can't be null");
}
Cela répond à mon besoin mais je souhaiterais aller plus loin en définissant une classe de Check qui effectue ce contrôle de précondition.

Ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public class Check {
    public void preCondNotNull(Object arg, String message) {
        if (null == arg) throw new IllegalArgumentException(message);
    }
}
Dans le code précédent, cela donnerait donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
public void maMethode(Integer ageDeToto) {
    Check.preCondNotNull("ageDeToto can't be null");
}
Le problème :

==> Ce qui me gène est que le message fourni à la précondition sera dans ce cas alloué à chaque test de la précondition (puisque passé en argument). Alors qu'en n'utilisant pas la classe Check, ce message n'est alloué que si l'exception est lancée.

Q1 : Pensez-vous que cette allocation systématique à chaque test d'une condition puisse s'avérer problématique ou bien le garbage collector fera suffisamment bien son travail pour que ce soit transparent ?

Q2 : Connaissez-vous des API faisant déjà le même travail que ma classe Check ?

En vous remerciant.