CodeGym /Blog Java /Random-FR /Méthode Java toString()
John Squirrels
Niveau 41
San Francisco

Méthode Java toString()

Publié dans le groupe Random-FR
Bien souvent, lors de la création d'un programme, il est nécessaire de connaître le contenu d'un objet. À ces fins, la classe Java Object , la classe Java la plus élémentaire de la hiérarchie des classes, définit une méthode toString() spéciale. Il renvoie une chaîne de caractères qui décrit l'objet. L'implémentation par défaut de la méthode toString() en Java produit une sortie comme celle-ci :
package.class@hashCode
c'est-à-dire toString , qui a été défini dans java.lang.Object donne le code de hachage de l'objet sous forme hexadécimale. Ce n’est souvent pas très clair et utile. Ainsi, lors de la création d'une nouvelle classe, il est d'usage de remplacer toString() afin que la chaîne de retour contienne le nom de la classe, les noms et les valeurs de toutes les variables. Remplacer correctement la méthode toString peut aider à la journalisation et au débogage d'un programme Java, il fournit des informations précieuses et importantes. En termes simples, la méthode toString() est utilisée en Java pour obtenir un objet chaîne représentant la valeur d'un objet numérique. En d’autres termes, il convertit un nombre en chaîne. Si la méthode prend un type de données simple comme argument, un objet chaîne est renvoyé qui représente la valeur du type de données simple.

Exemple de méthode Java toString()

Habituellement, si vous créez une classe, en plus de la méthode toString() en Java, vous devez remplacer les méthodes equals , hashCode et compareTo afin de savoir comment travailler avec ses objets. Mais pour l'instant, concentrons-nous sur toString . Dans la plupart des cas, soumettre des informations textuelles sur un objet est assez simple. Il vous suffit de comprendre exactement ce que l'utilisateur souhaite voir lors de la connexion. Donnons un exemple et créons une classe qui décrit un point sur le plan. Il a deux coordonnées : coordonnéeX, coordonnéeY. Naturellement, ils doivent être affichés à l'écran si un utilisateur demande « de quel objet s'agit-il », tout comme le nom de la classe elle-même. C'est ce que nous allons démontrer dans la méthode toString() substituée . Maintenant, nous créons la classe elle-même, ses champs (coordonnées), un constructeur, des getters pour obtenir des coordonnées (bien sûr, il est possible de ne pas les créer, mais du point de vue de l'utilisation correcte de la POO, les getters sont une bonne pratique). Juste pour illustrer, créons également une méthode qui crée un nouveau point - la somme des deux autres, et remplaçons également les méthodes equals et hashCode .
public class Point implements Comparable<Point> {
   private final int coordinateX;
   private final int coordinateY;

   public Point(final int coordinateX, final int coordinateY) {
       this.coordinateX = coordinateX;
       this.coordinateY = coordinateY;
   }

   public int getX() {
       return coordinateX;
   }

   public int getY() {
       return coordinateY;
   }

   public Point sum(final Point that) {
       return new Point(coordinateX + that.coordinateX, coordinateY + that.coordinateY);
   }

// here we override toString with coordinates and class name
   @Override
   public String toString() {
       return "Point{"
               + "X: " + getX()
               + ", Y: " + getY()
               +  '}';
   }

   @Override
   public boolean equals(Object o) {
       if (o == this) {
           return true;
       }
       if (o == null || o.getClass() != this.getClass()) {
           return false;
       }

   @Override
   public int hashCode() {
       return coordinateX + coordinateY;

   }
Créons maintenant une classe de test et une méthode principale. Là, nous avons deux points et le troisième, que nous obtenons de la somme de deux points. Nous appliquons la méthode toString jusqu’à présent et l’imprimons.
//toString() method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
     //call toString explicitly
       System.out.println(mySum.toString());
   }
}
Le résultat de ce travail de programme est ci-dessous :
Point{X : 3, Y : 15}
Vous n’avez pas réellement besoin d’appeler explicitement la méthode toString , et ce n’est généralement pas le cas. Pour appeler la méthode toString() , transmettez simplement l'objet souhaité à System.out.println . Notre classe de test ressemblera donc à ceci :
//toString method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
       //call toString implicitly
       System.out.println(mySum);
   }
}
Le résultat du programme est le même qu’avant. Que se passe-t-il si nous ne remplaçons pas la méthode toString , mais que nous souhaitons imprimer l'objet ? Dans ce cas, la méthode toString de la classe Object sera appelée. Dans notre exemple, si nous supprimons la méthode toString de notre classe Point et laissons tout tel quel dans la classe test, nous obtiendrons le résultat suivant :
Point@12
Ici, nous avons le code de hachage de l'objet en hexadécimal.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION