ToString method

Résolu
Signaler
Messages postés
42
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
30 mai 2013
-
Messages postés
42
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
30 mai 2013
-
Bonjour tout le monde,

J'ai une petite question concernant un code par rapport à ce qu'il renvoie

Voici :
public class Ap112{
  public static void main(
                        String args[]){
    Worker obj1 = new Worker(11);
    Worker obj2 = new Worker(22);
    Worker obj3 = new Worker(33);
    Worker obj4 = new Worker(44);
    obj2.doThis();
  }//end main()
}//end class Ap112

class Worker{
  private int data;
  
  public Worker(int data){
    this.data = data;
  }//end constructor
  
  public void doThis(){
    System.out.println(this);
  }//end area()
    
  public String toString(){
    return "" + data;
  }//end toString()
}// end class Worker


Ce code est correct et donne 22 (il s'agit d'un exercice) mais ce que je ne comprends pas est à quoi sert la méthode toString ? Et quand est-elle appelée ? Sans cette méthode, le code donne "worker@66848c". (si je l'efface simplement).

Je voulais savoir pourquoi.

Un grand merci à ceux qui prennent la peine de me lire,

Vanderkluizen Axel

Les petits ruisseaux font les grands fleuves...

5 réponses

Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
Hello,
Pas de grand mystère si tu suis bien les quelques instructions codées ici .
En fait, la méthode toString(), qui est ici une redéfinition, te permet de "convertir" l'objet courant en String, ce que tu essaies de faire dans la méthode doThis(). Par défaut, la méthode toString() te retourne la description de l'objet, ici un objet de type Worker à l'adresse 66848c. Tu peux la redéfinir pour retourner une chaine plus parlante bien sûr, ce qui est fait là.


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Bonjour,

Pour compléter un peu ce que dis buno,

La méthode toString est appelée par défaut sur ton objet dans la méthode System.out.println() et dans de nombreuses autres méthode qui prennent en paramètre un Object.

C'est une des méthode de la classe Object qui par défaut retourne l'adresse mémoire de ton objet. Cette méthode a été redéfinie dans la pluspart des classes que tu utilises, String, Integer, ...

Si tu modifie ce que retourne la méthode toString, quand tu feras un System.out.println(worker), le résultat sera modifié. Idem pour l'affichage d'un objet dans un JLabel par exemple.
Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
Axel, n'oublies pas de cliquer sur "Réponse Acceptée"


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
42
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
30 mai 2013
1
Bien vu, merci et bonne année !

Axel
Les petits ruisseaux font les grands fleuves...
Messages postés
42
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
30 mai 2013
1
Réponse utile et acceptée !
Merci les gars !
Les petits ruisseaux font les grands fleuves...