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 TheClassL'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 aclassL'output è:
Aclass@6FF3C5B5Questo è un testo a codice corto - non molto utile per l'utente. L'utente potrebbe aver preferito qualcosa di simile:
prop1 => 1;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 TheClassL'output è,
[Ljava.Lang.String;@D716361che è un altro codice di testo. È quello che volevi? Ti sarebbe piaciuto vedere qualcosa di simile:
uno due tredove il separatore di elementi è "",.
Elenco
Considera il seguente programma, in cui un ArrayList come oggetto, Al, dovrebbe essere stampato:
Importa Java.util.*;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.*;L'output è:
one = 1, due = 2, tre = 3L'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.*;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 aclassLa 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 TheClassL'output è:
Prop1 => 1Questo 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.