Méthode ToString en Java
Lorsque nous créons un objet de n'importe quelle classe définie par l'utilisateur et que nous imprimons l'objet, nous obtenons l'adresse Hexacode de cet objet. Voir ci-dessous ,
Book B = new Book ("Include Help"); System.out.println(B);
Sortie
@2a139a55
Ici, lorsque nous imprimerons l'objet B de la classe Book nous obtiendrons l'hexacode de l'Objet plutôt que la valeur de l'Objet.
Mais, lorsque nous faisons la même chose avec des classes Java prédéfinies telles que String. Il n'imprimera pas l'adresse mais la valeur de cet objet.
String S= new String ("Include Help"); System.out.println(S);
Sortie
Include Help
Alors, comment ça se passe dans le cas d'une classe définie par l'utilisateur ? N'est-il pas intéressant de voir ce qui se passe en arrière-plan ?
En effet, Java Compiler recherche la méthode toString() dans chaque classe qui convertit l'objet en chaîne. Dans le cas de cette méthode, elle n'est pas trouvée dans la classe, elle imprimera l'adresse HexaCode de l'objet. Mais dans les classes Java prédéfinies comme String, la méthode toString est prédéfinie.
Si nous voulons la même fonctionnalité dans les classes définies par l'utilisateur, nous devons déclarer explicitement la méthode toString dans notre classe, ce que nous avons fait dans notre exemple.
Voyons cela à l'aide d'un exemple,
Classe sans définir la méthode toString dans notre classe
package logicProgramming; //class representing a Book class Book { private String Name; private String Code; private String Author; public Book(String Name,String Code,String Author) { this.Name=Name; this.Code=Code; this.Author=Author; } } public class ExImportant { public static void main(String[] args) { Book B=new Book("Let Us C","HT301","Harsh Tomar"); // If We Use System.out.println(B) It Will Print // The HexaCode Address of Object B // But If We Want to Print the Value Of Object // We have To use toString Method In Our User Defined Class // Let Us UnderStand......... System.out.println(B); // See The Output It Will Print Address Of B } }
Sortie
logicProgramming.Book@2a139a55
Remarque : programmation logique est le nom du package et Book est le nom de la classe
Modifions maintenant ce code pour obtenir la valeur de l'objet afin de faire cela, nous devons définir une méthode toString() dans notre classe
package logicProgramming; //class representing the book class Book { private String Name; private String Code; private String Author; public Book2(String Name,String Code,String Author) { this.Name=Name; this.Code=Code; this.Author=Author; } // toString method public String toString() {return ("Name :"+this.Name+"\nCode :"+this.Code+"\nAuthor :"+this.Author);} } public class ExImportant2 { public static void main(String[] args) { Book B=new Book("Let Us C","HT301","Harsh Tomar"); // If We Use System.out.println(B) // It Will Print The HexaCode Address of Object B // But If We Want to Print the Value Of Object // We have To use toString Method In Our User Defined Class // Let Us UnderStand......... System.out.println(B); // See The Output It Will Print The Information Of Obeject B } }
Sortie
Name :Let Us C Code :HT301 Author :Harsh Tomar