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 :

Limiter les arguments d'un méthode à des valeurs prédéfinies


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 26
    Points : 31
    Points
    31
    Par défaut Limiter les arguments d'un méthode à des valeurs prédéfinies
    Bonjour,

    J'ai cherché un peu partout mais je n'ai pas trouvé de réponse a mon problème.

    J'aimerais pouvoir limiter les valeurs que peux accepter une méthode. Je ne sais pas si c'est possible.

    Voici un exemple de ce que je voudrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Test{
     
    		public static final int VALEUR1 = 1;
    		public static final int VALEUR2 = 2;
    		public static final int VALEUR3 = 3;
     
    		public void demonstration (int valeur){ 
    			//Il faudrait que valeur soit égale à VALEUR1, VALEUR2 ou VALEUR3 
    			//sinon erreur de compilation
    		}
    	}
    Je sais que je pourrais toujours faire des tests ou lever des Exeption si jamais la valeur n'est pas une de celle attendue. Mais je préférais une autre solution.

    Merci d'avance pour vos réponses !

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Utilises une enum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Test {
     
    		public enum DemoValue {
    				VALEUR1, VALEUR2, VALEUR3;
    		}
     
    		public void demonstration (DemoValue valeur){ 
    			//Il faudrait que valeur soit égale à VALEUR1, VALEUR2 ou VALEUR3 
    			//sinon erreur de compilation
    		}
    	}
    Il y a juste le cas null à gérer... mais un NullPointerException est tout à fait correct dans ce cas.


    a++

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Éventuellement, tu peux utiliser un enum.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public enum ValeurPossibles {
     
         VALEUR1,
         VALEUR2,
         VALEUR3
     
    }
    Et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void demonstration (ValeurPossibles valeur){ 
     
        // la on ne peut que passer une instance de ValeurPossibles
     
    }
    Ensuite, tout dépend de ce que tu as dois faire en fonction du paramètre valeur : sur une enum, on peut faire un switch déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public void demonstration (ValeurPossibles valeur){ 
     
         switch(valeur) {
              VALEUR1: 
                   // traitement cas VALEUR1
                   break;
              VALEUR2: 
                   // traitement cas VALEUR2
                   break;
              VALEUR3: 
                   // traitement cas VALEUR3
                   break;
         }
     
    }
    Mais tu peux aussi, si tu as besoin, ajouter des attributs à l'enum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public enum ValeurPossibles {
     
         VALEUR1(10),
         VALEUR2(100),
         VALEUR3(1000);
     
         private final int coef;
     
         public ValeurPossibles(int codef) {
               this.coef=coef;
         }   
     
         public int getCoefficient() {
             return coef;
         }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void demonstration (ValeurPossibles valeur){ 
     
         int resultat = 50 * valeur.getCoefficient();
     
      System.out.format("resultat = %d%n", resultat);
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 26
    Points : 31
    Points
    31
    Par défaut
    Merci Beaucoup a tout les deux pour ces réponses rapides et claires !

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

Discussions similaires

  1. Comment limiter les entrées d'un TEdit à des chiffres
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 12/02/2013, 18h34
  2. Récuperer les arguments d'une méthode dans un tableau/Arraylist
    Par Boudj94 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 21/01/2011, 15h00
  3. Limiter les accès disques pour traitement des données.
    Par harry le ravi dans le forum Windows
    Réponses: 1
    Dernier message: 18/11/2009, 01h11
  4. Creer une date avec des valeurs prédéfinies
    Par baedal dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2007, 11h58
  5. Limiter les droits à une partie des lignes d'une table
    Par Nabu dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 20/08/2006, 01h04

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