Blanc de mémoire pour passer des variables en paramètres

Résolu
metalkev64 Messages postés 45 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 28 avril 2009 - 26 juil. 2007 à 16:43
metalkev64 Messages postés 45 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 28 avril 2009 - 26 juil. 2007 à 17:53
voilà j'ai un blanc de mémoire, je sais que ca ce fais dans d'autre langague mais j'ai oublier le nom et surtout comment faire en java. Je souhaite envoyer a un module des varibles en paramètre afin qu'il qu'il traite les donnés. J'aimerais que les modification qu'il apporte au variable modifie également les originals dans l'évenement appelant. voici un exemple très simple qui illustre le principe que je cherche :

    public void jButton1_actionPerformed(ActionEvent e) {
        int liI = 1;
        String lsTest = "Patate";
        test(liI, lsTest);
        jLabel2.setText(String.valueOf(liI)+" "+lsTest);
    }


    private void test(int piI, String psTest)
    {
        piI = piI + 2;
        psTest = "Patates";
    }

j'aimerai que le Texte de jLabel2 soit : "3 Patates" et non "1 Patate".

L'exemple içi ne réflète que ce que le principe que je recherche car en réalité, j'ai trop de variable a modifier pour utiliser un return et mon module est appeler par trop d'événement différent pour utiliser une variable global.

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
26 juil. 2007 à 16:54
Cela s'appelle le passage par référence.

Mais en java, si tu utilise un objet, il le passe en référence !

Donc ton affichage du label devrait être dans cet exemple : "1 Patates" car le psTest est un objet, alors que le piI est un type primitif (passe lui un Integer à la place).
3
theguitou Messages postés 75 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 14 janvier 2009 34
26 juil. 2007 à 17:44
Salut, tu peux toujours créer un objet (sa tombe bien, java est objet) !

class Data {

  public int i;
  public String s;
}
public void jButton1_actionPerformed(ActionEvent e) {
  Data d = new Data();
  d.i = 1;
  d.s = "Patate";
  test(d);
  jLabel2.setText(d.i + " " + d.s);
}

private void test(Data d) {
  d.i += 2;
  d.s = "Patates";
}
3
metalkev64 Messages postés 45 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 28 avril 2009
26 juil. 2007 à 17:20
Merçi de me rafraichir la mémoire. 

mais voilà je change mes int pour des Integer et j'obtiens des message d'erreur me disant type incompatible. j'oublie surement un détails mais quoi?

Et pour mes String comment je peux faire car dans mon exemple tu me dit que comme psTest est un objet, puisqu'il est une String, mon résultat serai "1 Patates" mais mon résultat est "1 Patate" sans s dois-je également modifier le type mes string pour que cela fonctionne?
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
26 juil. 2007 à 17:43
Bonjour,

Et si tu utilisais une variable globale, il va bien évidemment garder la meme valeur que tu lui donnes.

Ceci dit, il est toujours déconnseillé d'utiliser les variables globales, parce qu'elles risquent de changer de valeur et tout le tralala, mais ca peut t'aider dans ton cas.

Kenza
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
metalkev64 Messages postés 45 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 28 avril 2009
26 juil. 2007 à 17:53
Merci du coup main, là je sais où je vais.
0
Rejoignez-nous