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 :

évaluer une string en classe !


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut évaluer une string en classe !
    bonjour,
    je cherche à évaluer une string pour avoir une référence sur une classe, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (composant+"EditPart").VISUAL_ID
    ou composant est une string, et je cherche donc à pointer ma classe formée par cette string pour obtenir une constante visual_id !

    j'ai fait un cast mais ça ne marche pas ou je m'y prend mal !

    merci

  2. #2
    Membre éprouvé Avatar de Tazmanian Devil
    Profil pro
    Inscrit en
    Février 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 119
    Par défaut
    C'est pas si simple parceque tu dois connaitre le package complet de la classe, fouille vers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class.forName("mon.pakage."+composant+"EditPart").getField("VISUAL_ID").get(null)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut
    je regarde ça de suite !
    merci beaucoup .... je commencais à m'énerver !

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Oulà, cela ressemble à une énorme erreur de conception... Déjà quand c'est pour récupérer une méthode la plupart du temps c'est faux, mais là un attribut !

    À part si c'est vraiment pour faire de l'introspection, il ne faut pas faire ça

    Dans quel contexte as-tu besoin de faire ça?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Par défaut
    ouias, là il faudrait plutot une interface
    implementée par toutes tes classes (composant+"EditPart") avec comme attribut VISUAL_ID

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Effectivement, il y a de bonnes chances qu'il y ait des soucis de conception ... Mais l'interface, c'est pas gagné pour définir plusieurs constantes ^^

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 42
    Par défaut
    je me doute que c'est pas propre ! alors voila mon probléme !

    je me sers de jet, qui est un générateur de code pour générer du code xmi !

    ce code xmi est interprêté par la suite et me donne un éditeur graphique avec des formes, défini dans le code xmi !!! voici un aperçu :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <%@ jet package="generation" imports="java.util.* generation.Generate java.io.IOException" class="generateControle" %>
    <%paramTemplate obj=(paramTemplate)argument;%> 
    <%List tab=(List)obj.getTab();%> 
    <%String url=(String)obj.getUrl();%> 
    <%String descId=(String)obj.getDescripteurId();%> 
    <%List savID=new ArrayList();%>
    <%List savIDatt=new ArrayList();%>
    <%List savIDprt=new ArrayList();%>
    <%List savIDprtAsyn=new ArrayList();%>
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xmi:XMI xmlns:xmi="http://www.omg.org/XMI" xmlns:Descripteur="http:///Descripteur.ecore" xmlns:DescripteurControle="http:///DescripteurControle.ecore" xmlns:Rdpo="http:///Rdpo.ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.0/notation" xmi:version="2.0">
    <modele>
    <contientComposantControle xmi:type="Descripteur:composantControle" xmi:id="<%try {savID.add(Generate.getID("composantControle"));%><%=savID.get(savID.size()-1)%><%} catch (IOException e) {e.printStackTrace();}%>">  
    <%for (ListIterator it = tab.listIterator(); it.hasNext();) {
    String str= (String)(it.next());		
    if (str.equals("Attribut")){%>
    	<refAttribut xmi:type="Descripteur:AttributValue" xmi:id="<%try {savIDatt.add(Generate.getID("AttributValue"));%><%=savIDatt.get(savIDatt.size()-1)%><%} catch (IOException e) {e.printStackTrace();}%>" nomAttributValue="nom"/>
    	<%}else if(str.equals("DescripteurPortControle")){%>
    	<redefinePort_controle xmi:type="Controle:PortControle" xmi:id="<%try {savIDprt.add(Generate.getID("PortControle"));%><%=savIDprt.get(savIDprt.size()-1)%><%} catch (IOException e) {e.printStackTrace();}%>" nomPort="nom">
    		<%while((it.hasNext()) && it.next().equals("DescripteurPortAsynchrone")){%>							
    			<redefineContenuPortControle xmi:type="Controle:PortAsynchrone" xmi:id="<%try {savIDprtAsyn.add(Generate.getID("PortAsynchrone"));%><%=savIDprtAsyn.get(savIDprt.size()-1)%><%} catch (IOException e) {e.printStackTrace();}%>" nomPort="nom"/>
    		<%}%>
    		<%it.previous();%>
    	</redefinePort_controle>	
    	<%}%>
    <%}%>
    <instance xmi:type="Descripteur:descripteurControle" href="<%=url%>#<%=descId%>"/>
    </contientComposantControle>
    </modele>
    <%Iterator iter =  savID.iterator();%>
    <%Iterator iterAtt =  savIDatt.iterator();%>
    <%Iterator iterPrt =  savIDprt.iterator();%>
    <%Iterator iterPrtAsyn =  savIDprtAsyn.iterator();%>
     
    <diagram>
    le code jet peut être vu comme un squelette ou une maquette, le code jet créer une classe java qui édite un buffer, à partir de la création d'un doc dom, je créer un fichier qui s'ouvre avec un éditeur graphique spécifique gmf !
    voila dans mon squelette, j'appel des méthodes qui me renvoi des choses ! la il y en a plusieurs, entre autre la c'est une constante d'une classe !!!
    or cette classe en question est générer à partir de modéle ecore ! et à chaque fois que je modifie mon modéle, les identifiants changent !!!! donc dans mon squelette, je dois faire appel à un service, qui est une méthode static, et celle-ci me renvoi, l'id en appellant MaClass.ID !! je passe en paramètre une string. cette string en concaténant "EditPart" donne une classe exitante !!!! il suffit que j'évalue cette string pour pointer ma classe ! et obtenir mon id !!!
    pour quelles raisons c'est pas propre ? y a-t- il une autre solution ?
    quels livres me conseillez-vous pour apprendre à programmer correctement ?
    merci

  8. #8
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Euh... je retire ce que j'ai dit, ce n'est pas ton code qui n'est pas propre ...

    Vive les générateurs !

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

Discussions similaires

  1. évaluer une string en nombre
    Par robert_trudel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2009, 20h53
  2. Réponses: 9
    Dernier message: 25/06/2008, 16h48
  3. Instancier une classe dont le nom est contenu dans une String
    Par fyque dans le forum Général Python
    Réponses: 15
    Dernier message: 13/06/2008, 12h33
  4. Réponses: 3
    Dernier message: 02/09/2007, 21h16
  5. Encoder une String en HTML dans une classe
    Par joKED dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/07/2007, 16h33

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