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 :

Comment utiliser un paramètre d'une autre classe


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    Par défaut Comment utiliser un paramètre d'une autre classe
    Bonjour

    j'utilise une API java, j'ai un programme qui fait appel à une classe processQueries

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class TRECQuerying {
    ......
    public String processQueries(double c) {
    		return processQueries(c, true);
    	}
    ........
    public static void main(String[] args)
    	{
    		TRECQuerying t = new TRECQuerying();
     
     
    		s.processQueries(0.5);}
    ce paramètre c, je veux l'appeler dans une autre classe dans un autre package

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 49
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Ben tu n'as pas 36 000 solutions... il faut que dans ta class TRECQuerying tu as un champ double c; et que dans ta méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    processQueries(double c, boolean valeur)
    tu rajoutes
    et pour finir, toujours dans ta class TRECQuerying une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public double getC(){
    return this.c;
    }
    voila

  3. #3
    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,

    La question n'a aucun sens pour moi : processQueries() est une méthode et pas une classe. Si tu as besoin d'utiliser un paramètre d'une méthode dans une autre méthode, il suffit de le passer en paramètre de l'autre méthode lors de l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void autreMethode(double c) {
     
        ... 
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void processQueries(double c, boolean valeur) {
     
        ...
     
       autreMethode( c );
     
        ... 
     
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    double c=1.5;
    processQueries(c, true);
    ...
    autreMethode(c);
    ...
    Quand à la réponse de @samustrife, on évite de stocker la valeur d'un paramètre d'une méthode dans l'instance qui a la méthode, à moins qu'il s'agisse d'un état de l'instance. Surtout, qu'on peut appeler la méthode 50000 fois et dans plusieurs threads en même temps : si ce n'est pas un état, on a aucun moyen de savoir à quel appel la valeur qu'on obtient par le get() correspond. Le programme résultant risque de faire un peu n'importe quoi, à part cas particuliers.
    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.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 49
    Points : 68
    Points
    68
    Par défaut
    Justement comme il voulait la réutiliser je me suis dit que ça devait correspondre à un état de son objet TRECQuerying, d'où ma proposition.

    Mais j'avoue ne pas avoir bien compris ce qu'il veut en faire de son paramètre c... Vu qu'il peut l'avoir avant d'appeler la méthode processQueries comme dit ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    double c=1.5;
    processQueries(c, true);
    ...
    autreMethode(c);
    ...
    :

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Java/JavaEE
    Inscrit en
    Août 2014
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java/JavaEE

    Informations forums :
    Inscription : Août 2014
    Messages : 194
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Utilisé une variable (passé en paramètre dans une méthode) dans une autre classe n'a aucun sens !!!
    soit tu passe directement en paramètre ta variable soit tu fais appel à ta méthode paramétrée et dedans tu as accès a ta variable.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    Par défaut
    Bonjour à tous merci pour vos réponses

    joel.drigo

    La question n'a aucun sens pour moi : processQueries() est une méthode et pas une classe.

    Vous avez raison c'est une erreur : en fait au lieu d'écrire une méthode processqueries j'ai écris classe

    Ce que j'ai fais pour résoudre ça c'est de déclarer le paramètre dans la classe TRECQuery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class TRECQuerying {
     
    	protected double c=0.5 ;
    Ensuite j'ai utilisé un getter et un setter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void setParameter(double _c) {
    		this.c = _c;
    	}
     
     
    	/**
             * Returns the parameter as set by setParameter()
             */
    	public double getParameter() {
    		return this.c;
    	}
    et dans l'autre classe qui s'appelle Posingt je l'apelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Posting
    protected double c;
     
    public PostingListManager(paramtre 1 type, parametre 2 type...)
     
    {
    TRECQuerying trec=new TRECQuerying();
    ystem.out.println(trec.getParameter() );
    } {
    ici tous ce passe bien et le paramètre s'affiche correctement

    Le problème c'est que je veux varier ce paramètre, donc j'ai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String[] args)
    	{
    		TRECQuerying t = new TRECQuerying();
    		TRECQuerying s = new TRECQuerying();
    		s.setParameter(0.4);
                    t.setParameter(0.6);
     
     
    ....}
    Malheureusement le paramètre c ne change pas

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pourtant le principe a l'air correct.

    Citation Envoyé par africanwinners Voir le message
    Malheureusement le paramètre c ne change pas
    Comment le sais-tu ? Montre-nous.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pourtant le principe a l'air correct.



    Comment le sais-tu ? Montre-nous.
    Merci pour la réponse

    puisque dans l'autre classe Posting

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TRECQuerying trec=new TRECQuerying();
    System.out.println(trec.getParameter() );
    ca affiche toujours la valeur de c déifinit au début de la classe 0.5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class TRECQuerying {
     
    	protected double c=0.5 ;

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est normal, puisque tu regardes un autre objet que celui dont tu as modifié la valeur.
    Chaque fois que tu fais new, c'est un nouvel objet, qui contient ses propres valeurs et pas celles des autres.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 157
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par thelvin Voir le message
    C'est normal, puisque tu regardes un autre objet que celui dont tu as modifié la valeur.
    Chaque fois que tu fais new, c'est un nouvel objet, qui contient ses propres valeurs et pas celles des autres.
    Bonjour

    J'ai compris la problème, mais comment appeler l'autre classe sans l'instanciation!

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Il faut que tu lui aies passé l'objet à un moment ou à un autre. Dans son constructeur, dans une méthode, n'importe quand mais il faut l'avoir fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. comment utiliser un composant d'une autre page
    Par touta89 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/09/2011, 10h47
  2. Réponses: 3
    Dernier message: 14/09/2010, 10h14
  3. Comment passer request et response à une autre classe
    Par wassimbik dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 29/07/2010, 16h08
  4. Utiliser les propriétés d'une autre classe
    Par maparè dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2010, 16h43
  5. Réponses: 2
    Dernier message: 02/05/2006, 14h34

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