axelvdk
Messages postés41Date d'inscriptiondimanche 26 août 2012StatutMembreDernière intervention30 mai 2013
-
4 janv. 2012 à 16:03
axelvdk
Messages postés41Date d'inscriptiondimanche 26 août 2012StatutMembreDernière intervention30 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,
BunoCS
Messages postés15480Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention12 juin 2024103 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...
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 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.