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

Java Discussion :

appel à une variable d'une autre classe


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut appel à une variable d'une autre classe
    Bonsoir,

    je veux faire un appel d'une variable "CMS" d'une autre classe, est il possible d'ajouter public pour la rendre visible?

    Voici le premier code où j'ai déclaré la variable CMS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    final List<String> CMS = new ArrayList<String>();
     
              while ((line6 = bfr6.readLine()) != null){
     
                 //System.out.println("\n"+line6);
     
                   if (line6.contains("There is a vulnerable point")) {
     
                      CMS.add(line6);
     
                 }
    Voici le deuxième où je veux appeler la variable CMS, à noter que ces deux codes se trouvent dans des classes différentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (!CMS.isEmpty()) {
     
                   Element cms = doc.createElement("cms");
     
                    cms.appendChild(doc.createTextNode(URL.get(0)));
     
                   gestion_configuration.appendChild(cms);
     
             }
    Merci pour vos réponses




    }

  2. #2
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il est difficile de te répondre exactement parce que tu nous donnes un code partiel.

    Il semble que d'après le premier extrait, tu déclares une variable CMS dans une méthode. Cette variable n'existe donc que dans la méthode, et ne peut être accessible depuis une autre classe (exceptée si elle était locale à la méthode).

    Tu dois déclarer ta variable dans la classe pour la rendre éventuellement accessible (les ... c'est pour "je ne sais pas quels paramètres ou code tu pourrais mettre ici, ça dépend de ce que tu cherches à faire") :

    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
    37
    38
    public class CMSListe {
     
         private final List<String> cmsListe;
     
         public CMSListe(...) { 
               cmsListe = remplirListe(...);          
         }
     
         private List<String> remplirListe(...) {
     
              List<String> cms = new ArrayList<String>()
     
              ...
     
              while ((line6 = bfr6.readLine()) != null){
     
                 //System.out.println("\n"+line6);
     
                   if (line6.contains("There is a vulnerable point")) {
     
                      cms.add(line6);
     
              }
     
              ... 
     
              return cms; 
     
         }
     
         // cette méthode permet de récupérer l'objet référencé par la variable
         public List<String> getListe() {
             return cmsListe; // à la place, si tu veux que l'appelant ne puisse pas modifier cette liste, tu peux mettre return Collections.unmodifiableList(cmsListe);
         }
     
         ...
     
    }

    Ensuite, il faudra que la méthode appelante ait une référence sur l'objet de classe CMSListe, soit en la passant en paramètre de cette méthode, soit en faisant une variable de classe. Par exemple, tu peux avoir :

    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
    public class AutreClasse {
     
        ...
     
        private final CmsListe cmsListe;
     
        ...
     
        public AutreClasse(CmsListe cmsListe) {
           this.cmsListe=cmsListe;
        }
     
        public void exporterVersXML(...) {
     
            ...
     
            List<String> cms =  cmsListe.getListe();
     
            if (!cms.isEmpty()) {
     
                   Element cms = doc.createElement("cms");
     
                    cms.appendChild(doc.createTextNode(URL.get(0)));
     
                   gestion_configuration.appendChild(cms); // la, tu ne peux pas faire ça : cms est une liste de String, alors appendChild prend un Node en argument : il te faudra convertir cmsListe en Node (probablement un Element, selon la structure de ton xml)
     
             }
     
             ...
     
        }
     
    }
    et l'appel ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
     
         CmsListe cmsListe = new CmsListe(...);
         AutreClasse autre = new AutreClasse(cmsListe);
     
         ...
     
         autreClasse.exporterVersXML(...);
     
         ...
     
     
    ...
    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.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    je m'excuse pour la non clarté du code, je vous joins la classe compléte ou j'ai déclaré la variable CMS.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    public class parse4 {
     
      public static void HandleChannelTag(Document document) throws IOException {
     
     
    NodeList nodeList = document.getElementsByTagName("urls");
    HandleTopicTag(nodeList, "\t");
     
     
      }
     
     
     private static void HandleTopicTag(NodeList nodeList, String tab) throws IOException{
     
       for (int i = 0; i < nodeList.getLength(); i++) {
     
                Node node = nodeList.item(i);
     
           if (node.getNodeType() == Node.ELEMENT_NODE){
     
               Element element = (Element) node;
     
    	   System.out.println(HandleTextTag("url", element, "\t"));
     
     
    }
     
    }
    }
     
     
    private static String HandleTextTag(String tagName, Element element, String tab) throws IOException{
     
     StringBuilder returnValue = new StringBuilder();
     
     
     for (int i = 0; i < element.getElementsByTagName(tagName).getLength(); i++) {
     
      NodeList nodeList = element.getElementsByTagName(tagName).item(i).getChildNodes();
     
     Node node = (Node) nodeList.item(0);
     
     
        String[] cmd4 = {"/bin/sh","-c", "cd /pentest/web/joomscan/;perl joomscan.pl -u "+node.getNodeValue()};
     
         Runtime r6 = Runtime.getRuntime();
     
           Process p6 =r6.exec(cmd4);
     
      BufferedReader bfr6 = new BufferedReader(new InputStreamReader(p6.getInputStream()));
     
     
           String line6 = "";
     
     
     
    final List<String> CMS = new ArrayList<String>();
     
     
     
     
                while ((line6 = bfr6.readLine()) != null){
     
     
                if (line6.contains("There is a vulnerable point")) {
     
                        CMS.add(line6);
     
                 }
     
             }
    }
    return returnValue.toString();
     
    }
    }

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    la variable CMS est interne à la méthode, elle n'existe pas en dehors.

    Tu dois donc dans l'ordre, la transformer un un champ de ta classe plutot qu'un variable locale
    créer un méthode genre getCMS qui retourne ce champ
    utiliser cette méthode getCMS là où tu en as besoin.

Discussions similaires

  1. Appel de variables d'une fonction dans une autre fonction
    Par black cat747 dans le forum Interfaces Graphiques
    Réponses: 13
    Dernier message: 11/05/2010, 15h34
  2. Garder une référence vers une variable d'une autre classe
    Par choupeo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/12/2007, 18h30
  3. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  4. Passer une variable d'une form a l'autre
    Par 6BORG dans le forum Delphi
    Réponses: 3
    Dernier message: 19/08/2006, 17h15
  5. [debutant]passager une variable d'une page a une autre
    Par Eisy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/03/2006, 11h18

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