IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Validation de précondition et allocation de String [FAQ]


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Par défaut Validation de précondition et allocation de String
    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.

  2. #2
    Membre Expert
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    As-tu regardé l'instruction assert ?

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Par défaut
    Bonjour hasalex,

    Merci pour ton aide, l'instruction assert me semble effectivement répondre à mon besoin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Oracle 10g - PLSQL - Allocation dynamique String
    Par mamid1706 dans le forum PL/SQL
    Réponses: 4
    Dernier message: 14/04/2010, 15h36
  2. Réponses: 2
    Dernier message: 18/02/2009, 13h30
  3. string dans un struc : allocation de mémoire ?
    Par wonderyan dans le forum C
    Réponses: 19
    Dernier message: 13/09/2007, 15h59
  4. [Débutant] Validation d'une valeur numérique dans une variable String
    Par anto84 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 11/07/2007, 10h26
  5. string et allocation mémoire ?
    Par tintin72 dans le forum C++
    Réponses: 2
    Dernier message: 18/12/2006, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo