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 :

Appel de constantes en format String


Sujet :

Langage Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Points : 125
    Points
    125
    Par défaut Appel de constantes en format String
    Bonjour,
    j'ai une question à laquelle j'espère avoir une super réponse.
    J'aimerai pouvoir passé les paramêtres d'une méthode au travers des arguments du main. J'ai aucun problème pour le moment avec les types standard mais imaginons que je veuille passé une constante d'une classe.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > MonAppli 3 toto Config.DEFAULT
     
    main(args)
    {
             execute(arg[0], arg[1], arg[2]);
             //Resultat souhaité
             execute(3,"toto", Config.DEFAULT);
    }
    Voyez le genre ?
    Je sais bien que ce n'est pas possible de cette manière.
    Ma réflection est la suivante : Ce n'est pas possible de faire ceci car Config.DEFAULT est traduit à a compilation. Donc il faut utilisé un Invoke. Seulement j'imagine qu'un outil pourrait exister...

    Quelqu'un a une idée ou connait une réponse ?
    Dans tous les cas je vous remercie...

    A+

  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,


    Tu peux utiliser la reflection pour cela (plus de détail : API Reflection)

    Par exemple dans le cas où toutes les constantes sont défini dans la classe Config :
    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
    class Config {
     
        public static final String DEFAULT = "( valeur par default )";
     
        public static Object getByName(String name) {
            try {
                Field field = Config.class.getField(name);
                return field.get(null); // On récupère la valeur static
            } catch (Exception e) {
                // En cas d'erreur on retourne simplement le nom :
                return name;
            }
        }
     
    }

    Ainsi le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println( Config.getByName("DEFAULT") );
    System.out.println( Config.getByName("AZERTY") );
    affichera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ( valeur par default )
    AZERTY

    Maintenant si tu dois conserver le nom de classe il faudra que tu découpe toi même la chaine et gérer la recherche de classe par nom...

    a++

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Points : 125
    Points
    125
    Par défaut
    Merci,
    justement c comme tu dis. Dans ton cas tu récupère un objet de type Object que tu met dans un paramètre de type String. Donc aucun problème.
    Dans mon cas je récupère un Objet String qui pourra être n'importe quel autre type mais il devra faire appel à son appel en texte dans un code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String appel = "Toto.getInstance()";
     
    //ici je sais pas quio faire
     
    //résultat
    myCall(Toto.getInstance());
    Je crois que la seul manière est l'Invokation ?!?!?!?

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/07/2007, 11h03
  2. JTable, créer un comparateur de Dates au format String
    Par Nyphel dans le forum Composants
    Réponses: 7
    Dernier message: 13/02/2007, 16h15
  3. [Oracle] traitement des dates au format string
    Par shaftJackson dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2007, 18h25
  4. initialiser constante tableau de String
    Par danyboy85 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 27/04/2006, 17h44
  5. Réponses: 11
    Dernier message: 08/10/2004, 15h12

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