Objet tostring en java

Objet tostring en java
En Java, un objet est l'instance d'une classe, ou c'est un tableau. Il y a une classe appelée, objet. Cet objet ne doit pas être confondu avec un objet, qui est l'instance d'une classe. «Objet», en commençant par la majuscule «O», est le nom d'une classe, une classe spéciale. En Java, l'ancêtre le plus haut de toutes les classes est cette classe, objet. L'objet peut être instancié dans une classe, objet (éventuellement nommé, avec minuscule, «o»). Cependant, il n'est pas nécessaire d'instancier la classe spéciale, objet. Toutes les classes, qui sont des classes prédéfinies ou définies par le programmeur, sont héritées de cette classe, objet.

La classe d'objets a une méthode appelée, toString (). Cette méthode renvoie une représentation de chaîne de l'objet d'une classe normale. Toutes les classes héritent de cette méthode de l'objet de classe. Chaque tableau (comme un objet) a une méthode similaire.

Malheureusement, cette représentation de chaîne de l'objet est un code texte court (texte littéral court à chaîne). Ce n'est pas très utile, bien qu'il puisse être décodé. Un tel décodage n'est pas abordé dans cet article. Et donc, le programmeur doit remplacer cette méthode afin d'avoir une représentation de l'objet; L'utilisateur de l'ordinateur appréciera que. Le remplacement est abordé dans cet article.

Comportement par défaut de la méthode toString ()

Types primitifs

Les types primitifs tels que l'INT existent à part entière. Cependant, chaque type primitif en Java a une classe correspondante (wrapper). En ce qui concerne la conversion d'objets primitifs en chaînes, ce sont les classes correspondantes qui doivent être utilisées. Le programme suivant l'illustre pour l'int. La classe correspondante pour int est la classe entier.

classe publique TheClass
public static void main (String [] args)
Entier dans = 5;
String str = dans.toString ();
Système.dehors.println (str);

La sortie est 5. Si «entier» était tapé en tant qu'INT, alors un message d'erreur aurait été émis au moment de la compilation. La méthode toString () de la plus grande classe d'ancêtre a été utilisée ici, sans aucun problème. C'est-à-dire que l'entier, 5 a été converti en chaîne et imprimé sans aucun problème. Cependant, si la classe était une classe définie par programmeur ou un autre type de classe prédéfinie, alors il y aurait eu un problème.

Classe définie par le programmeur

Considérez le programme suivant qui imprime la représentation de l'objet défini par le programmeur, OBJ:

classe ACLASS
int prop1 = 1;
int prop2 = 2;
void MTHD ()
Système.dehors.println ("vu");


classe publique TheClass
public static void main (String [] args)
Aclass obj = new aclass ();
String str = obj.toString ();
Système.dehors.println (str);

La sortie est:

Aclass @ 6ff3c5b5

Ceci est un texte codé court - pas très utile à l'utilisateur. L'utilisateur a peut-être préféré quelque chose comme:

prop1 => 1;
prop2 => 2;

Ce sont les différentes propriétés (champs) et leurs valeurs. Ce qui sépare une propriété de sa valeur dans l'impression est «=>», qui devrait être introduit par le programmeur. Dans une question comme celle-ci, les méthodes ne sont généralement pas imprimées.

Déployer

Considérez le programme suivant, où le tableau en tant qu'objet, ARR, doit être imprimé:

classe publique TheClass
public static void main (String [] args)
String [] arr = new String [] "One", "Two", "Three";
String str = arr.toString ();
Système.dehors.println (str);

La sortie est,

[Ljava.égouter.Chaîne; @ D716361

qui est un autre code texte. Est-ce ce que tu voulais? Vous auriez adoré voir quelque chose comme:

un, deux, trois

où le séparateur d'éléments est «,».

Liste

Considérez le programme suivant, lorsqu'un ArrayList en tant qu'objet, AL, doit être imprimé:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
ArrayList al = new ArrayList ();
Al.ajoute un"); Al.ajouter ("deux"); Al.ajouter ("trois");
String str = al.toString ();
Système.dehors.println (str);

La sortie est:

[un, deux, trois]

La sortie est assez bonne! Cela signifie que le programmeur n'a pas à remplacer l'objet.Méthode toString () Lorsqu'il concerne la liste Array (ou la liste possible en général). Cependant, en ce qui concerne les objets définis par le programmeur ou le tableau, le programmeur doit remplacer la méthode.

Carte

Considérez le programme suivant, où un hashmap en tant qu'objet, HM, doit être imprimé:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
Hashmap hm = new hashmap ();
HM.put ("un", 1); HM.put ("deux", 2); HM.put ("trois", 3);
String str = hm.toString ();
Système.dehors.println (str);

La sortie est:

un = 1, deux = 2, trois = 3

La sortie est assez bonne! Les paires de clés / valeur se distinguent, avec le séparateur d'éléments, «,» ». Cela signifie que le programmeur n'a pas à remplacer l'objet.Méthode toString (), lorsqu'elle concerne le hashmap (ou la carte possible en général). Cependant, en ce qui concerne les objets définis par le programmeur ou le tableau, le programmeur doit remplacer la méthode.

Le reste de cet article traite de la mise à l'origine de l'objet.TOSTRING () Méthode héréditaire de l'objet défini par le programmeur et du tableau.

ToString overring ()

Déployer

Avec le tableau, aujourd'hui, le primordial est indirect ou solution. Java a une classe appelée, des tableaux. Cette classe a la méthode de tostring, déjà remplacée par Java. Dans la classe, la méthode toString () est statique: cela signifie que la classe des tableaux n'a pas à être instanciée pour sa méthode toString () à utiliser. Ici, la méthode toString () prend un argument, qui est l'identifiant du tableau. Il produit une sortie, où le séparateur est «,». Réseaux de classe, est dans le java.user.* emballer. Le programme suivant montre la solution de contournement pour les tableaux:

Importer Java.user.*
classe publique TheClass
public static void main (String [] args)
double [] arr = nouveau double [] 10.1, 20.2, 30.3;
String str = tableaux.tostring (arr);
Système.dehors.println (str);

La sortie est:

[dix.1, 20.2, 30.3]

La sortie est assez bonne! Et donc, aujourd'hui, le programmeur n'a plus besoin de coder une méthode primordiale, pour la méthode toString (), pour le tableau Java. Le programmeur fait une solution de contournement avec des tableaux et son toString ().

Objet défini par le programmeur

Avec la classe définie par le programmeur, la méthode toString () de la classe d'objets, doit être redéfinie, comme illustré dans la classe définie par programmeur suivante:

classe ACLASS
int prop1 = 1;
int prop2 = 2;
void MTHD ()
Système.dehors.println ("vu");

@Passer outre
public String toString ()
String str1 = "prop1 =>" + ceci.Prop1;
String str2 = "prop2 =>" + ceci.Prop2;
return str1 + '\ n' + str2;

La technique consiste à utiliser l'opérateur de concaténation des chaînes, + pour rejoindre des littéraux non corrigées avec des littéraux de cordes. La «@Override» précédente empêche certaines erreurs dans la méthode remplacée. La redéfinition ici est remplacée. Une classe définie par le programmeur correspond à l'objet défini par le programmeur. La méthode java main () suivante est appropriée pour la classe ci-dessus:

classe publique TheClass
public static void main (String [] args)
Aclass obj = new aclass ();
String str = obj.toString ();
Système.dehors.println (str);

La sortie est:

prop1 => 1
prop2 => 2

Cette sortie est mieux appréciée par l'utilisateur que le code texte court, "Aclass @ 6FF3C5B5". N'oubliez pas que la définition primordiale se déroule dans la classe d'intérêt.

Conclusion

La classe d'objets a une méthode appelée, toString (). Cette méthode renvoie une représentation de chaîne de l'objet d'une classe. Toutes les classes héritent de cette méthode de l'objet de classe. Chaque tableau (comme un objet) a une méthode similaire. Chaque classe doit être remplacée de cette méthode, indirectement ou directement.

Avec les types primitifs, utilisez les types de référence (e.g., Entier pour int), où Java a déjà une méthode prédéfinie de tostring (), qui est satisfaisante. Avec des listes et des cartes également, Java a déjà une méthode prédéfinie de toString (), qui est satisfaisante. Avec un tableau, faites une solution de contournement: utilisez la méthode toString () de la classe des tableaux. Avec la classe définie par programme.