ToString method

Résolu
axelvdk Messages postés 42 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 30 mai 2013 - 4 janv. 2012 à 16:03
axelvdk Messages postés 42 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 30 mai 2013 - 5 janv. 2012 à 12:52
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...
A voir également:

5 réponses

BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
4 janv. 2012 à 17:18
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...
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
5 janv. 2012 à 07:58
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.
3
BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
5 janv. 2012 à 11:52
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...
3
axelvdk Messages postés 42 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 30 mai 2013 1
4 janv. 2012 à 17:38
Bien vu, merci et bonne année !

Axel
Les petits ruisseaux font les grands fleuves...
0

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

Posez votre question
axelvdk Messages postés 42 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 30 mai 2013 1
5 janv. 2012 à 12:52
Réponse utile et acceptée !
Merci les gars !
Les petits ruisseaux font les grands fleuves...
0
Rejoignez-nous