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 :

Retouner la valeur d'un objet suivant son nom


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Par défaut Retouner la valeur d'un objet suivant son nom
    Bonjour,
    Cette question à surement déjà été poster, mais je ne la trouve pas !

    Je voudrais faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       Image test;
       String nom=test;
       public void XXX(String nom){
            YYY(nom)
       }
        public void YYY(Image Img){
            ...
        }
    ==> Là il me dit que "nom" doit être une Image, ce qui est complètement normale. Mais moi je veux y mettre la variable de l'image(test) !

    Y-a-t-il une fonction en java qui recherche la variable correspondant ??
    Merci

  2. #2
    Membre éclairé Avatar de spoklo
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 67
    Par défaut
    j'ai pas très bien compris ta question !
    YYY(nom) : nom est un String ! donc si ne pourra jamais passer un objet Image

    tu peut t'inspirer de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void XXX(Object nom){
      if (nom instanceof Image) {
        YYY(nom)
      } else {
      ...
      }
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Par défaut
    Euu non ca va pas !

    En fait j'ai une fonction d'une classe A qui appelle la fonction XXX de la classe B avec comme paramètre un String dont la valeur change suivant l'action réalisée.
    Dans la classe B, j'ai plein de variable de type Image, et tous le String qui vienne de la classe A sont forcement déjà instancié dans B comme étant le nom d'une image.
    Et depuis la classe B, je cherche comment lié le String à l'image correspondante.
    Je pourrais bien faire plein de If, mais c'est pas très joli.

    Je voudrais donc appelé la fonction YYY d'une classe C qui doit prendre en paramètre une image. Mais j'ai que le nom de l'image en String. Comment faire ?

    J'espère avoir été plus clair ! ^^

  4. #4
    Membre éclairé Avatar de spoklo
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 67
    Par défaut
    Je pense que tu cherche a faire de l'introspection.

    Voila un exemple :

    Un main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class ImageIntrospectionRun {
    	public static void main(String[] args) throws Exception {
    		ImageIntrospection imIntrosp = new ImageIntrospection();
    		imIntrosp.XXX("image3Ref");
    	}
    }
    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
    import java.lang.reflect.Field;
    import java.util.HashMap;
    import java.util.Map;
     
    public class ImageIntrospection {
     
    	Map<String, Image> imageMap = new HashMap<String, Image>();
     
    	public Image image1Ref = new Image("dataImage1");
    	public Image image2Ref = new Image("dataImage2");
    	public Image image3Ref = new Image("dataImage3");
     
    	public void XXX(String nom) throws SecurityException, NoSuchFieldException,
    			IllegalArgumentException, IllegalAccessException {
    		Field f = this.getClass().getField(nom);
    		Image lcoalImage = (Image) f.get(this);
    		YYY(lcoalImage);
    	}
     
    	public void YYY(Image image) {
    		System.out.println(image.toString());
    	}
     
    }
    Image.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Image {
    	private String data;
     
    	public Image(String pData) {
    		data = pData;
    	}
     
    	public String toString() {
    		return getClass().getName() + "@" + Integer.toHexString(hashCode()) + ",data=" + data;
    	}
     
    }

  5. #5
    Membre éclairé Avatar de spoklo
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 67
    Par défaut
    Tu peux aussi utilise une HashMap (Clé, valeur). La clé sera tes String et la valeur tes Images.

    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
    import java.util.HashMap;
    import java.util.Map;
     
     
    public class ImageMap {
     
    	Map<String, Image> imageMap = new HashMap<String, Image>();
     
    	public void init() {
     
    		Image image1Ref = new Image();
    		Image image2Ref = new Image();
    		Image image3Ref = new Image();
     
    		imageMap.put("image1", image1Ref);
    		imageMap.put("image2", image2Ref);
    		imageMap.put("image3", image3Ref);
     
    		XXX("image2");
    		//...
    	}
     
     
    	   public void XXX(String nom){
    		   Image lcoalImage = imageMap.get(nom);
    	        YYY(lcoalImage);
    	   }
    	   public void YYY(Image image){
    	        //
    	   }
     
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Par défaut
    Merci pour les réponses :
    1ere ==> trop compliquer ^^
    2eme ==> c'est déjà mieux !

    La 2ème m'a l'air bien et faisable !
    Mais il n'y aurait vraiment aucune fonction du type : getVariableWithNameEgual(String) ?? ^^

    Merci !

  7. #7
    Membre éclairé Avatar de spoklo
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 67
    Par défaut
    Citation Envoyé par Revan Voir le message
    Mais il n'y aurait vraiment aucune fonction du type : getVariableWithNameEgual(String) ?? ^^

    Merci !
    c'est dans le code de 1er solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Field f = this.getClass().getField(nom);
    Image lcoalImage = (Image) f.get(this);

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

Discussions similaires

  1. référence à un objet par son nom de variable
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/08/2009, 22h01
  2. Selectionner un objet par son nom
    Par cricrides dans le forum VB.NET
    Réponses: 4
    Dernier message: 16/12/2008, 11h00
  3. Réponses: 3
    Dernier message: 30/05/2008, 11h31
  4. Trouver un objet via son nom
    Par rvdth dans le forum Windows Forms
    Réponses: 7
    Dernier message: 29/03/2008, 13h58
  5. Récupérer objet par son nom dans une chaîne
    Par peijnoob dans le forum C#
    Réponses: 7
    Dernier message: 14/02/2008, 16h47

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