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 :

Interpreter une string comme une méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut Interpreter une string comme une méthode
    Bonjour à tous,

    Je souhaite imbriquer un getter dans un setter.

    Je m'explique :
    J'obtiens pas le biais d'une table de correspondance un string :
    String var = props.getProperty("1");

    A ce stade, var est égale à "livre.getTitre()".

    Je souhaite faire une manipulation du genre unObjet.setNom(var);

    Évidemment le nom de unObjet devient "livre.getTitre()" et non le titre de l'objet Livre instancié plus tôt.

    Existe-t-il un moyen de faire interpréter ma variable var non comme du texte mais comme du code ? Ou une autre méthode ?

    On m'a conseillé de passer par des méthodes de réflexivité mais je ne vois pas ce que cela peut m'apporter.

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Par défaut
    Salut !

    Tu peux t'en sortir avec la réflectivité,
    Il faut déjà que tu travaille sur ta chaine pour conserver uniquement "getTitre"

    Ensuite tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Methode method = Livre.class.getMethod("getTitre",...)
    Puis pour terminer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String titre = (String)method.invoke(tonObjetLivre,...)
    Voilà ça fais longtemps que j'ai pas fait ça mais ça doit être un truc comme ça !!

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Oui, mais le problème c'est que dans l'exemple donné, le mot livre représente une variable locale, et que la réflectivité ne peut pas accéder aux variables locales. Ni en fonction de leur nom, ni d'aucune façon.

    Donc, il n'est pas possible d'interpréter la chaîne complète "livre.getTitre()" par réflectivité.

    Je pense qu'il existe des APIs pour simplifier ce genre de besoins, mais jusqu'à maintenant on m'a toujours poussé à en développer une maison. Et c'est un peu long à présenter.
    Une idée pourrait être de considérer "livre.getTitre()" comme un langage de script et de démarrer un des moteurs de script de Java pour l'interpréter, en lui passant un contexte où "livre" est une variable globale désignant l'objet sur lequel on veut effectuer un traitement. Dans mes souvenirs, c'est un peu compliqué en comparaison du besoin assez simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Par défaut
    Avec la phrase : "le titre de l'objet Livre instancié plus tôt", j'avais pris en hypothèse qu'on savait déjà sur quel livre on travaillait à ce moment, mais si c'est pas le cas, effectivement ma solution n'est plus suffisante !

    Comment tu accède à tes livres en fait?

  5. #5
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    As-tu besoin d'interpréter n'importe quel String représentant un bout de code ou bien est-ce que tu as un besoin plus restreint? Il peut exister des solutions adaptées sans aller jusqu'à un moteur d'exécution de scripts.

    Dans quel contexte es-tu?
    Comment te retrouves-tu à devoir interpréter ce genre d'expression?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pareil, ce serait quand même beaucoup plus simple de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unObjet.setNom(livre.getLivre())
    plutôt que d'essayer de transformer java en un langage interprété qu'il n'est pas!


    Maitenant, il arrive dans certains cas particulier de devoir accéder à des méthodes par reflection sur base de leur nom. Dans ce genre de cas, tu as à disposition au choix

    commons-beansutils -> facilite la réflexivité
    beanshell -> interprétation de lignes de commande java au vol
    groovy -> pareil (jamais testé personnellement)
    des trucs comme les expression langage de javaEE5 -> permet uniquement l'accès aux getters setters

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

Discussions similaires

  1. [XL-2010] Interpréter une string comme une formule dans VBA (pas cellule Excel)
    Par Quentin77170 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/05/2015, 23h04
  2. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  3. Interpreter le contenu d'une string comme de l'hexa
    Par thibal_kamehouse dans le forum C++
    Réponses: 4
    Dernier message: 30/11/2006, 17h46
  4. [C#] Comment Splitter une string avec une string ?
    Par ADJ Design dans le forum C#
    Réponses: 12
    Dernier message: 27/07/2006, 12h10
  5. Conseil sur l'extraction d'une string dans une string
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 14h54

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