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

avec Java Discussion :

variable pour plusieurs classe


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut variable pour plusieurs classe
    Bonjour,

    Je me présente Mateoox600, je code depuis peut et me heurte a un problème, j'ai dans ma classe main un hashmap dont je voudrait récupérer la valeur dans une autre classe.

    comment faire?

    Merci d'avance pour vos réponse.

  2. #2
    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
    Hello,

    la solution la plus simpliste, la plus directe, est de passer cette Map en paramètre de la classe qui en a besoin.

    Exemple :

    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
    class AgeDePierre {
     
      private final Map<String, Integer> ages;
     
      AgeDePierre(Map<String, Integer> ages) {
        this.ages = ages;
      }
     
      void afficherAgeDePierre() {
        System.out.println(ages.get("Pierre"));
      }
     
    }
     
    public class Main {
     
      public static void main(String[] args) {
        Map<String, Integer> ages = new HashMap<>();
        ages.put("Pierre", 25);
        ages.put("Paul", 19);
        ages.put("Jacques", 41);
     
        AgeDePierre afficheur = new AgeDePierre(ages);
     
        afficheur.afficherAgeDePierre();
     
        ages.put("Pierre", 50);
        afficheur.afficherAgeDePierre();
      }
     
    }
    Mais il existe beaucoup de manières de prendre le problème. C'est juste qu'on en revient au final toujours, soit à ça, soit aux variables statiques (et que les variables statiques, on doit éviter quand on débute.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui mais la c'est dans la même java class moi je parle entre java class

  4. #4
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Mateoox600 Voir le message
    Oui mais la c'est dans la même java class moi je parle entre java class
    Eh bien pour la suite, il faut réveiller un peu sa matière grise.

    Il te suffit simplement de dupliquer ce que thelvin vient de te proposer:

    Code Java : 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
    37
    38
    39
    40
    41
    class AgeDePierre {
     
      private final Map<String, Integer> ages;
     
      AgeDePierre(Map<String, Integer> ages) {
        this.ages = ages;
      }
     
      void afficherAgeDePierre() {
        System.out.println(ages.get("Pierre"));
      }
     
    }
     
    class Foo {
        // ...
    }
     
    class Bar {
        // ...
    }
     
    public class Main {
     
      public static void main(String[] args) {
        Map<String, Integer> ages = new HashMap<>();
        ages.put("Pierre", 25);
        ages.put("Paul", 19);
        ages.put("Jacques", 41);
     
        AgeDePierre afficheur = new AgeDePierre(ages);
        final Foo foo = new Foo(ages); // on passe par référence
        final Bar bar = new Bar(ages); // on passe par référence
     
        afficheur.afficherAgeDePierre();
     
        ages.put("Pierre", 50);
        afficheur.afficherAgeDePierre();
      }
     
    }

    Attention ici, car ta ressource sera réellement modifiée entre chaque instance de chaque classe. Chaque instance dispose d'une référence mutable sur ta map, ce n'est pas une copie jetable à la fin de l'exécution d'une procédure.

    Bon courage.

  5. #5
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Mateoox600 Voir le message
    c'est dans la même java class moi
    En l'occurence, non. Il y'a bien 2 classes : Main et AgeDePierre. Peut-être définies dans le même fichier .java, mais c'est bien deux classes (on voit qu'il y a le mot clef "class", qui déclare une classe, deux fois. Et rien n'empêche d'éventuellement mettre ces deux classes dans 2 fichiers différents. Ou de créer autant de classes qu'on veut qui utilisent ce même type de constructeur avec en argument la variable qu'on veut pouvoir accéder dans l'autre classe, comme dans l'exemple de @Songbird_.
    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.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/08/2008, 00h05
  2. utiliser les mêmes variable dans plusieurs class
    Par hterrolle dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 21h11
  3. Variables pour plusieurs boites de dialogue
    Par bontempf dans le forum MFC
    Réponses: 2
    Dernier message: 18/03/2007, 14h57
  4. [VBA-E] Conserver une variable pour plusieurs modules
    Par pilote301152 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2006, 13h14
  5. Utilisation de variables dans plusieurs classes
    Par dedeloux dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2005, 17h25

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