Object ToString in Java

Object ToString in Java
In Java, un oggetto è l'istanza di una classe o è un array. C'è una classe chiamata, oggetto. Questo oggetto non dovrebbe essere confuso con un oggetto, che è l'istanza di una classe. "Oggetto", a partire da "O" maiuscola, è il nome di una classe, una classe speciale. In Java, l'antenato più alto di tutte le classi è questa classe, oggetto. L'oggetto può essere istanziato in una classe, oggetto (facoltativamente denominato, con minuscolo, 'o'). Tuttavia, non è necessario istanziare la classe speciale, oggetto. Tutte le classi, che sono classi predefinite o definite dal programmatore, sono ereditate da questa classe, oggetto.

La classe Object ha un metodo chiamato, toString (). Questo metodo restituisce una rappresentazione stringa dell'oggetto di una classe normale. Tutte le classi ereditano questo metodo dall'oggetto di classe. Ogni array (come oggetto) ha un metodo simile.

Sfortunatamente, questa rappresentazione della stringa dell'oggetto è un codice di testo breve (testo letterale della stringa corta). Non è molto utile, sebbene possa essere decodificato. Tale decodifica non è affrontata in questo articolo. E così, il programmatore deve sovrascrivere questo metodo per avere una rappresentazione dell'oggetto; L'utente del computer lo apprezzerà. Il principale è affrontato in questo articolo.

Comportamento predefinito del metodo toString ()

Tipi primitivi

Tipi primitivi come l'Int esistono a sé stanti. Tuttavia, ogni tipo primitivo in Java ha una classe corrispondente (wrapper). Quando si tratta di convertire oggetti primitivi in ​​stringhe, sono le classi corrispondenti che dovrebbero essere utilizzate. Il seguente programma lo illustra per l'int. La classe corrispondente per INT è la classe intera.

Classe pubblica TheClass
public static void main (string [] args)
Intero in = 5;
Stringa str = in.accordare();
Sistema.fuori.println (str);

L'output è 5. Se "intero" fosse digitato come int, allora sarebbe stato emesso un messaggio di errore al momento della compilazione. Il metodo ToString () della più grande classe antenato è stato impiegato qui, senza alcun problema. Cioè, l'intero, 5 è stato convertito in una stringa e stampato senza alcun problema. Tuttavia, se la classe fosse una classe definita dal programmatore o un altro tipo di classe predefinita, allora ci sarebbe stato qualche problema.

Classe definita dal programmatore

Prendi in considerazione il seguente programma che stampa la rappresentazione dell'oggetto definito del programmatore, OBJ:

classe aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
Sistema.fuori.println ("visto");


Classe pubblica TheClass
public static void main (string [] args)
Aclass obj = new aclass ();
Stringa str = obj.accordare();
Sistema.fuori.println (str);

L'output è:

Aclass@6FF3C5B5

Questo è un testo a codice corto - non molto utile per l'utente. L'utente potrebbe aver preferito qualcosa di simile:

prop1 => 1;
prop2 => 2;

Queste sono le diverse proprietà (campi) e i loro valori. Ciò che separa una proprietà dal suo valore nella stampa è "=>", che dovrebbe essere introdotto dal programmatore. In una domanda come questa, i metodi non sono di solito stampati.

Vettore

Considera il seguente programma, in cui l'array come oggetto, ARR, deve essere stampato:

Classe pubblica TheClass
public static void main (string [] args)
String [] arr = new String [] "one", "due", "tre";
Stringa str = arr.accordare();
Sistema.fuori.println (str);

L'output è,

[Ljava.Lang.String;@D716361

che è un altro codice di testo. È quello che volevi? Ti sarebbe piaciuto vedere qualcosa di simile:

uno due tre

dove il separatore di elementi è "",.

Elenco

Considera il seguente programma, in cui un ArrayList come oggetto, Al, dovrebbe essere stampato:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
ArrayList al = new ArrayList ();
al.Aggiungi uno"); al.Aggiungi ("due"); al.Aggiungi ("tre");
Stringa str = al.accordare();
Sistema.fuori.println (str);

L'output è:

[uno due tre]

L'output è abbastanza buono! Ciò significa che il programmatore non deve sovrascrivere l'oggetto.Metodo toString () quando riguarda la rarra (o possibile elenco in generale). Tuttavia, quando si tratta di oggetti definiti dal programmatore o array, il programmatore deve sovrascrivere il metodo.

Carta geografica

Considera il seguente programma, in cui un hashmap come oggetto, HM, dovrebbe essere stampato:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
Hashmap hm = new hashmap ();
hm.put ("uno", 1); hm.put ("due", 2); hm.put ("tre", 3);
Stringa str = hm.accordare();
Sistema.fuori.println (str);

L'output è:

one = 1, due = 2, tre = 3

L'output è abbastanza buono! Le coppie chiave/valore sono distinguibili, con il separatore di elementi, essendo ",". Ciò significa che il programmatore non deve sovrascrivere l'oggetto.Metodo toString (), quando riguarda l'hashmap (o possibile mappa in generale). Tuttavia, quando si tratta di oggetti definiti dal programmatore o array, il programmatore deve sovrascrivere il metodo.

Il resto di questo articolo si occupa della prevalenza dell'oggetto.Tostring () Metodo ereditato dell'oggetto definito dal programmatore e dell'array.

Tostring prevalente ()

Vettore

Con l'array, oggi, il principale è indiretto o soluzione. Java ha una classe chiamata, array. Questa classe ha il metodo toString, già sovrascritto da Java. Nella classe, il metodo Tostring () è statico: ciò significa che la classe di array non deve essere istanziata per il suo metodo ToString () da utilizzare. Qui, il metodo Tostring () prende un argomento, che è l'identificatore dell'array. Produce un output, dove il separatore è "". Array di classe, è nel Java.util.* pacchetto. Il seguente programma mostra la soluzione alternativa per gli array:

Importa Java.util.*;
Classe pubblica TheClass
public static void main (string [] args)
double [] arr = new double [] 10.1, 20.2, 30.3;
String Str = array.toString (arr);
Sistema.fuori.println (str);

L'output è:

[10.1, 20.2, 30.3]

L'output è abbastanza buono! E così, oggi, il programmatore non deve più codificare un metodo di prevalenza, per il metodo ToString (), per Java Array. Il programmatore fa una soluzione alternativa con array e il suo toString ().

Oggetto definito dal programmatore

Con la classe definita del programmatore, il metodo ToString () della classe Object, deve essere ridefinito, come illustrato nella seguente classe del programmatore definita:

classe aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
Sistema.fuori.println ("visto");

@Oltrepassare
public String toString ()
String str1 = "prop1 =>" + questo.prop1;
String str2 = "prop2 =>" + questo.Prop2;
restituire str1 + '\ n' + str2;

La tecnica è quella di utilizzare l'operatore di concatenazione delle stringhe, + per unire i letterali non stringa con letterali a stringa. Il precedente "@Override" impedisce alcuni errori nel metodo sovrascritto. La ridefinizione qui è prevalente. Una classe definita dal programmatore corrisponde all'oggetto definito dal programmatore. Il seguente metodo Java Main () è appropriato per la classe sopra:

Classe pubblica TheClass
public static void main (string [] args)
Aclass obj = new aclass ();
Stringa str = obj.accordare();
Sistema.fuori.println (str);

L'output è:

Prop1 => 1
Prop2 => 2

Questo output è meglio apprezzato dall'utente rispetto al codice di testo corto, "Aclass@6FF3C5B5". Non dimenticare che la definizione prevalente si svolge nella classe di interesse.

Conclusione

La classe Object ha un metodo chiamato, toString (). Questo metodo restituisce una rappresentazione stringa dell'oggetto di una classe. Tutte le classi ereditano questo metodo dall'oggetto di classe. Ogni array (come oggetto) ha un metodo simile. Ogni classe ha bisogno di prevalere di questo metodo, indirettamente o direttamente.

Con tipi primitivi, utilizzare i tipi di riferimento (E.G., Intero per int), dove Java ha già un metodo predefinito di toString (). Anche con elenchi e mappe, Java ha già un metodo Tostring () predefinito, che è soddisfacente. Con un array, fai una soluzione alternativa: usa il metodo ToString () della classe Arrays. Con la classe definita dal programmatore, eseguire il sovraccarico effettivo, usando l'operatore di concatenazione della stringa, +, il più spesso possibile.