Java Readfields

Java Readfields
“Per leggere oggetti che sono stati precedentemente scritti da ObjectOutputStream, utilizziamo la classe ObjectInputStream di Java.pacchetto io e java.io.Pacchetto ObjectOutputStream che ha la funzione readfields (). I campi persistenti vengono letti dal flusso e resi disponibili per nome utilizzando Java.io.ObjectInputStream.funzione readfields (). La funzione readfields () è una funzione non statica a cui è possibile accedere solo tramite l'oggetto di classe; Se tentiamo di ottenere il metodo direttamente per nome della classe, incontreremo un errore. Quando leggi i campi, la funzione readfields () può aumentare un'eccezione."
  1. Ioexception: Durante l'esecuzione, questa eccezione può essere lanciata se si verifica un errore di input o output.
  2. ClassNotFoundException: Questo errore può verificarsi se la classe per la quale gli oggetti sono stati serializzati non viene trovata.
  3. NotactException: Questo messaggio di errore può apparire se il flusso non è aperto e pronto a leggere gli oggetti. Successivamente, passeremo attraverso la sintassi e l'esempio del metodo Readfields () della classe ObjectInputStream.

Sintassi di readfields () metodo in java in ubuntu 20.04

La sintassi della funzione Java per la funzione Readfields () è la seguente:

ObjectInputStream pubblico.Getfield readfields ();

L'oggetto getfields controlla i campi a cui è possibile accedere per questa classe utilizzando ObjectStreamclass dell'oggetto corrente. Durante questa specifica chiamata al metodo ReadObject della classe, l'oggetto Getfields fornito da Readfields è l'unico che è valido. Solo una volta che i readfields sono stati invocati possono essere letti più dati direttamente dal flusso.

Parametro di readfields () metodo:

Non ci sono parametri che accetta.

Tipo di restituzione del metodo ReadFeilds ():

ObjectInputStream è il tipo di restituzione del metodo. Quando chiami getfield, restituirà un oggetto chiamato getfield che indica che i campi permanenti dell'oggetto non sono serializzati.

Esempio 1: usando il metodo readfield () in java in ubuntu 20.04

La funzione readfields () di Java.io.La classe ObjectInputStream è dimostrata nell'esempio seguente.

Qui, abbiamo incluso il pacchetto Java “Java.Io "con la parola chiave" importazione ". Quindi, abbiamo stabilito la classe "RF1" con il modificatore "pubblico". Abbiamo costruito il metodo principale all'interno della classe "RF1" che lancia anche "eccezione" perché la classe Java "Eccezione" è anche definita con il metodo principale se si è verificata. All'interno del corpo principale, abbiamo la dichiarazione degli oggetti come "FOS" da FileOutputStream, "OBJ" da ObjectOutputStream, oggetto "FIS" da FileInputStream e l'oggetto "OIS" dalla classe "ObjectInputStream".

Gli oggetti "FIS" e "FOS" prendono il file "File.txt ”come input. L'oggetto "OBJ" e "OIS" viene utilizzato per mostrare il flusso di questi file. Quindi, utilizziamo il metodo writeObject () con l'istanza "OBJ", che si chiama funzione readfields () al suo interno. The WriteObject scrive i numeri interi dell'istanza "OBJ". Il flusso verrà scaricato dal metodo flush (), poiché l'abbiamo aggiunto dopo il metodo WECKOBJECT. Dopo questo, abbiamo un'istanza "RF" dei readFilds che chiamava il metodo ReadObject per leggere l'oggetto "OIS" e stampare i campi.

Successivamente, abbiamo una classe statica, "readfields", che implementa una classe serializzabile, quindi dichiara la stringa "mystr" e la imposta con il valore della stringa. Lì, abbiamo chiamato il metodo "ReadObject", che definisce l'istanza "S" per il flusso di input dell'oggetto. Il metodo readfields () leggi quindi i campi e restituili con l'accesso del metodo di ritorno.

Il compilatore Java, senza alcuna Exception, visualizza i campi dal metodo Readfields ().

Esempio 2: Utilizzo del metodo ReadFilds con la convalida delle stringhe in Java in Ubuntu 20.04

Come abbiamo visto in un precedente esempio, quel metodo Readfields () ha restituito il campo dopo averlo letto. Ora stiamo eseguendo la stessa operazione ma con uno scenario complesso. Convalideremo la prima stringa e poi visualizzeremo la seconda.

Abbiamo costruito la classe "RF2", che ha il metodo principale. All'interno delle staffe del metodo principale, abbiamo definito la stringa come "S1" e abbiamo il valore con la rappresentazione della stringa. Quindi, abbiamo usato il blocco di cattura try. Il blocco di prova ha la creazione di file "file.txt "chiamando la classe" fileouputstream ". L'istanza è definita come "filein" per l'input del flusso che viene passato nell'oggetto "fileout".

Quindi, abbiamo chiamato i metodi "WriteObject" e "WriteUTF". Il metodo WETEBJECT viene utilizzato per scrivere il flusso dall'operazione "Demo" e il metodo WriteUTF () prende "S1" per scrivere la stringa nell'output come flusso di base. Successivamente, leggiamo l'oggetto con il metodo ReadObject e abbiamo visualizzato la stringa. Il metodo Readfields viene impiegato per leggere i campi di "S2". L'istruzione IF è chiamata per il registro Validazione. Il blocco catch traccerà le eccezioni di input e output dei flussi.

Successivamente, abbiamo una classe "demo" per la serializzazione della stringa e per la convalida di oggetti deserializzati e abbiamo anche implementato la classe ObjectInputValidation. Qui, abbiamo impostato il valore della stringa per la variabile "S2". Abbiamo un metodo "ReadObject" per questa classe che ha il metodo Readfields per leggere i campi e il metodo di Registervalidation. Quindi, restituire la stringa all'interno di "S2" sul metodo principale.

La compilazione e l'esecuzione della sceneggiatura sopra menzionata di Java comporterà il seguente risultato.

Esempio 3: usando il metodo getfields () per ottenere il campo della classe in Java in Ubuntu 20.04

Il campo pubblico di questa classe, insieme ai suoi membri, può essere ottenuto utilizzando la funzione getfield () della "Java.Lang.Classe "classe. La funzione restituisce oggetti sul campo che rappresentano il campo richiesto di questa classe.

La nostra classe "getfield" è creata con l'oggetto "myobj" al suo interno. Quindi, abbiamo impiegato il metodo principale all'interno della classe. Lì, abbiamo una variabile di nome classing che ha invocato il metodo forname (). L'oggetto collegato alla classe verrà restituito con questo metodo. Successivamente, abbiamo utilizzato il metodo getfield () per ottenere il campo di classe.

Dopo aver compilato il codice, abbiamo ottenuto il nome dell'oggetto della classe e il campo della classe sottostante.

Conclusione

Per leggere i dati serializzati per la trasmissione di rete, utilizzare i metodi readfields (). I valori del campo serializzabile vengono letti dal flusso usando il metodo Readfields, che li rende accessibili tramite la classe getfield. Un metodo readobject di classe serializzabile è l'unico posto da cui si può chiamare il metodo di readfields. Inoltre, abbiamo introdotto un altro metodo che è getfield () che restituisce il nome del campo della classe specificata.