Java Readfields

Java Readfields
"For å lese objekter som tidligere er skrevet av ObjectOutputStream, bruker vi ObjectInputStream -klassen til Java.io -pakken og javaen.io.ObjectOutputStream -pakke som har readfields () -funksjonen. De vedvarende feltene blir lest fra strømmen og gjort tilgjengelig med navn ved hjelp av Java.io.ObjectInputStream.Readfields () -funksjon. Readfields () -funksjonen er en ikke-statisk funksjon som bare kan nås gjennom klasseobjektet; Hvis vi prøver å få metoden direkte etter klassenavn, vil vi møte en feil. Når du leser felt, kan readfields () -funksjonen øke et unntak.”
  1. IOException: Når du utfører, kan dette unntaket kastes hvis det er en inngangs- eller utgangsfeil.
  2. ClassNotFoundException: Denne feilen kan oppstå hvis klassen som objektene ble serialisert ikke er funnet.
  3. NotactiveException: Denne feilmeldingen kan vises hvis strømmen ikke er åpen og klar til å lese objekter. Deretter vil vi gå gjennom syntaks og eksempel på ObjectInputStream Class's Readfields () -metode.

Syntaks av Readfields () Metode i Java i Ubuntu 20.04

Syntaksen til Java støtter for readfields () -funksjonen er som følger:

Offentlig objektInputStream.Getfield Readfields ();

GetFields -objektet sjekker feltene som kan nås for denne klassen ved å bruke ObjectStreamClass til det nåværende objektet. Under denne spesifikke samtalen til klassens readObject -metode er GetFields -objektet levert av Readfields det eneste som er gyldig. Bare når Readfields er blitt påberopt, kan mer data leses rett fra strømmen.

Parameter for ReadFields () Metode:

Det er ingen parametere som det aksepterer.

Returtype av Readfeilds () Metode:

ObjectInputStream er metodens returtype. Når du kaller GetField, vil det returnere et objekt som heter Getfield som indikerer at objektets permanente felt ikke er serialisert.

Eksempel 1: Bruke Readfield () -metoden i Java i Ubuntu 20.04

Readfields () -funksjonen til Java.io.ObjectInputStream -klassen er demonstrert i eksemplet nedenfor.

Her har vi inkludert Java -pakken “Java.io ”med nøkkelordet“ import ”. Deretter etablerte vi klassen “RF1” med den “offentlige” modifisereren. Vi har konstruert hovedmetoden i klassen "RF1" som også kaster "unntaket" fordi Java "unntak" -klassen også er definert med hovedmetoden hvis det skjedde. Inne i hovedorganet har vi erklæringen om objektene som "Fos" av FileOutputStream, "OBJ" av ObjectOutputStream, "FIS" -objekt av FileInputStream, og "OIS" -objektet av klassen "ObjectInputStream".

Objektene “FIS” og “Fos” tar filen “Fil.txt ”som inngang. Objektet “OBJ” og “OIS” brukes til å vise strømmen av disse filene. Deretter bruker vi WritObject () -metoden med forekomsten “OBJ”, som kalles readfields () -funksjonen inne i den. WritObject skriver heltalene til forekomsten “OBJ”. Strømmen vil bli skyllet med FLUSH () -metoden, da vi har lagt den til etter WritObject -metoden. Etter dette har vi en forekomst "RF" av Readfeilds som kalte ReadObject -metoden for å lese objektet "OIS" og skrive ut feltene.

Deretter har vi en statisk klasse, "Readfields", som implementerer en serialiserbar klasse, som deretter erklærer strengen "Mystr" og setter den med strengverdien. Der har vi kalt metoden “ReadObject”, som definerer forekomsten “S” for objektinngangsstrømmen. Readfields () -metoden les deretter feltene og returner dem med tilgang til returmetoden.

Java -kompilatoren, uten noen IOException, viser feltene fra Readfields () -metoden.

Eksempel 2: Bruke Readfeilds -metoden med validering av strenger i Java i Ubuntu 20.04

Som vi har sett i et tidligere eksempel, at Readfields () -metoden returnerte feltet etter å ha lest den. Nå utfører vi den samme operasjonen, men med et komplekst scenario. Vi kommer til å validere den første strengen og deretter vise den andre.

Vi har konstruert klassen "RF2", som har hovedmetoden. Innenfor parentesene til hovedmetoden har vi definert strengen som "S1" og har verdien med strengrepresentasjon. Deretter brukte vi prøveangrepsblokken. Try -blokken har opprettelse av filen “Fil.TXT ”ved å kalle klassen“ FileOuputstream ”. Forekomsten er definert som "filin" for inngangen til strømmen som sendes i "fileout" -objektet.

Deretter kalte vi metodene "WritObject" og "Writutf". WritObject -metoden brukes til å skrive strømmen fra "Demo" -operasjonen, og Writutf () -metoden tar "S1" for å skrive strengen i utgangen som en grunnleggende strøm. Etter det leste vi objektet med ReadObject -metoden og viste strengen. Readfields -metoden brukes for å lese feltene til “S2”. IF -uttalelsen blir bedt om registervalidering. Fangstblokken vil spore inngangs- og utgangs unntak av strømningene.

Deretter har vi en "demo" -klasse for serialisering av strengen og for validering av deserialiserte objekter, og vi har også implementert ObjectInputvalideringsklassen. Her har vi satt strengverdien for "S2" -variabelen. Vi har en metode "ReadObject" for denne klassen som har Readfields -metoden for å lese felt og registervalideringsmetoden. Returner deretter strengen i "S2" til hovedmetoden.

Å sammenstille og kjøre det nevnte skriptet til Java vil resultere i følgende utfall.

Eksempel 3: Bruke getfields () -metoden for å få feltet til klassen i Java i Ubuntu 20.04

Det offentlige feltet i denne klassen, sammen med medlemmene, kan fås ved hjelp av getfield () -funksjonen til “Java.lang.Klasse ”klasse. Funksjonen returnerer feltobjekter som representerer det forespurte feltet i denne klassen.

Klassen vår "getfield" er opprettet med objektet "myobj" inni den. Deretter benyttet vi hovedmetoden i klassen. Der har vi en klassenavnsvariabel som påkalte Forname () -metoden. Objektet som er koblet til klassen vil bli returnert med denne metoden. Etter det benyttet vi GetField () -metoden for å få klassefeltet.

Etter å ha sammenstilt koden, fikk vi klasseobjektnavnet og feltet i klassen nedenfor.

Konklusjon

For å lese serialiserte data for nettverksoverføring, bruk Readfields () -metodene. Verdiene for serialiserbare felt blir lest fra strømmen ved hjelp av Readfields -metoden, som deretter gjør dem tilgjengelige gjennom Getfield -klassen. En serialiserbar klasse ReadObject -metoden er det eneste stedet som Readfields -metoden kan kalles. Videre har vi introdusert en annen metode som er GetField () som returnerer feltnavnet til den spesifiserte klassen.