Objekt toostring i java

Objekt toostring i java
I Java er et objekt forekomsten av en klasse, eller det er en matrise. Det er en klasse som heter, objekt. Dette objektet skal ikke forveksles med et objekt, som er forekomsten av en klasse. “Object”, som begynner med store bokstaver 'O', er navnet på en klasse, en spesiell klasse. I Java er den øverste stamfaren til alle klasser denne klassen, objekt. Objektet kan bli instantiert til en klasse, objekt (eventuelt navngitt, med små bokstaver, 'o'). Det er imidlertid ikke nødvendig å instantisere den spesielle klassen, objektet. Alle klasser, som er forhåndsdefinerte eller programmererdefinerte klasser, arves fra denne klassen, objekt.

Objektklassen har en metode som heter, ToString (). Denne metoden returnerer en strengrepresentasjon av objektet til en normal klasse. Alle klasser arver denne metoden fra klasseobjekt. Hver matrise (som et objekt) har en lignende metode.

Dessverre er denne strengrepresentasjonen av objektet en kort tekstkode (kort streng bokstavelig tekst). Det er ikke veldig nyttig, selv om det kan dekodes. Slik avkoding blir ikke adressert i denne artikkelen. Og så må programmereren overstyre denne metoden for å ha en representasjon av objektet; Datamaskinbrukeren vil sette pris på det. Den overordnede er adressert i denne artikkelen.

Standard oppførsel av toString () -metode

Primitive typer

Primitive typer som int eksisterer i seg selv. Imidlertid har hver primitiv type i Java en tilsvarende klasse (innpakning). Når det gjelder å konvertere primitive objekter til strenger, er det de tilsvarende klassene som bør brukes. Følgende program illustrerer dette for int. Den tilsvarende klassen for int er heltallklassen.

public class theclass
public static void main (String [] args)
Heltall i = 5;
String str = i.toString ();
System.ute.println (str);

Utgangen er 5. Hvis "Heltall" ble skrevet som Int, ville en feilmelding blitt utstedt på kompileringstidspunktet. ToString () -metoden til den største forfedres klassen har vært ansatt her, uten noe problem. Det vil si at heltallet, 5 er konvertert til en streng og skrevet ut uten noe problem. Imidlertid, hvis klassen var en programmeringsdefinert klasse eller en annen type forhåndsdefinert klasse, ville det vært noe problem.

Programmerer definert klasse

Tenk på følgende program som skriver ut representasjonen av det programmererdefinerte objektet, OBJ:

klasse aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
System.ute.println ("sett");


public class theclass
public static void main (String [] args)
Aclass obj = new aclass ();
String str = obj.toString ();
System.ute.println (str);

Utgangen er:

Aclass@6ff3c5b5

Dette er en kortkodet tekst - ikke veldig nyttig for brukeren. Brukeren kan ha foretrukket noe sånt som:

Prop1 => 1;
Prop2 => 2;

Dette er de forskjellige egenskapene (felt) og deres verdier. Det som skiller en egenskap fra verdien i utskriften er “=>”, som skal introduseres av programmereren. I et spørsmål som dette skrives ikke metodene vanligvis ikke.

Array

Tenk på følgende program, der matrisen som et objekt, ARR, skal skrives ut:

public class theclass
public static void main (String [] args)
String [] arr = new String [] "One", "Two", "Three";
String str = arr.toString ();
System.ute.println (str);

Utgangen er,

[Ljava.lang.Streng;@d716361

som er en annen tekstkode. Er det det du ønsket? Du ville elsket å se noe sånt som:

en to tre

der elementets separator er "".

Liste

Tenk på følgende program, der en ArrayList som et objekt, AL, skal skrives ut:

Importer Java.util.*;
public class theclass
public static void main (String [] args)
ArrayList Al = new ArrayList ();
al.Legg til ("en"); al.Legg til ("to"); al.Legg til ("tre");
String str = al.toString ();
System.ute.println (str);

Utgangen er:

[en to tre]

Utgangen er ganske bra! Dette betyr at programmereren ikke trenger å overstyre objektet.ToString () -metode når den angår ArrayList (eller mulig liste generelt). Imidlertid, når det gjelder programmeringsdefinerte objekter eller matrisen, må programmereren overstyre metoden.

Kart

Tenk på følgende program, der et hashmap som et objekt, HM, skal skrives ut:

Importer Java.util.*;
public class theclass
public static void main (String [] args)
HashMap Hm = new HashMap ();
hm.put ("en", 1); hm.put ("to", 2); hm.put ("tre", 3);
String str = hm.toString ();
System.ute.println (str);

Utgangen er:

en = 1, to = 2, tre = 3

Utgangen er ganske bra! Nøkkel-/verdiparene kan skilles, med elementets separator, å være, "," ". Dette betyr at programmereren ikke trenger å overstyre objektet.toString () -metode, når den angår hashmap (eller mulig kart generelt). Imidlertid, når det gjelder programmeringsdefinerte objekter eller matrisen, må programmereren overstyre metoden.

Resten av denne artikkelen omhandler overordningen av objektet.toString () arvelig metode for det programmererdefinerte objektet og matrisen.

Overstyring av toString ()

Array

Med matrisen, i dag, er overstyringen indirekte eller løsning. Java har en klasse som heter, matriser. Denne klassen har toString -metoden, allerede overstyrt av Java. I klassen er toString () -metoden statisk: dette betyr at matriser -klassen ikke trenger å bli instantiert for sin toString () -metode som skal brukes. Her tar toString () -metoden et argument, som er identifikatoren for matrisen. Den produserer en utgang, der separatoren er "". Klassematriser, er i Java.util.* pakke. Følgende program viser løsningen for matriser:

Importer Java.util.*;
public class theclass
public static void main (String [] args)
dobbel [] arr = new Double [] 10.1, 20.2, 30.3;
String str = matriser.toString (arr);
System.ute.println (str);

Utgangen er:

[10.1, 20.2, 30.3]

Utgangen er ganske bra! Og så, i dag, trenger programmereren ikke lenger kode en overordnet metode, for toString () -metoden, for Java Array. Programmereren gjør en løsning med matriser og dens toString ().

Programmerer definert objekt

Med programmererdefinert klasse må toString () -metoden i objektklassen bare omdefineres, som illustrert i følgende programmererdefinerte klasse:

klasse aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
System.ute.println ("sett");

@Overstyring
public String toString ()
String str1 = "prop1 =>" + dette.prop1;
String str2 = "prop2 =>" + dette.Prop2;
return str1 + '\ n' + str2;

Teknikken er å bruke strengen sammenkoblingsoperatør, + for å bli sammen med ikke-streng litteraler med strenglitteraler. Den foregående "@Override" forhindrer visse feil i den overstyrte metoden. Redefinisjon her er overordnet. En programmeringsdefinert klasse tilsvarer det programmeringsdefinerte objektet. Følgende Java Main () -metode er passende for klassen ovenfor:

public class theclass
public static void main (String [] args)
Aclass obj = new aclass ();
String str = obj.toString ();
System.ute.println (str);

Utgangen er:

prop1 => 1
Prop2 => 2

Denne utgangen blir bedre verdsatt av brukeren enn den korte tekstkoden, “ACLASS@6FF3C5B5”. Ikke glem at den overordnede definisjonen finner sted i klassen av interesse.

Konklusjon

Objektklassen har en metode som heter, ToString (). Denne metoden returnerer en strengrepresentasjon av objektet til en klasse. Alle klasser arver denne metoden fra klasseobjekt. Hver matrise (som et objekt) har en lignende metode. Hver klasse trenger overstyring av denne metoden, indirekte eller direkte.

Med primitive typer, bruk referansetypene (e.g., Heltall for int), der Java allerede har en forhåndsdefinert overstyring av toString (), som er tilfredsstillende. Med lister og kart har Java allerede en forhåndsdefinert overstyring av toString (), som er tilfredsstillende. Med en matrise, gjør du en løsning: Bruk toString () -metoden i Arrays -klassen. Med den programmererdefinerte klassen, gjør du den faktiske overordnede, ved å bruke strengen sammenkoblingsoperatør, +, så ofte som mulig.