Java Readfields

Java Readfields
„Aby odczytać obiekty, które zostały wcześniej napisane przez ObjectoutputStream, używamy klasy OBSTERINPUTSTream Java.Pakiet IO i Java.io.Pakiet obiektuutputStream, który ma funkcję ReadFields (). Trwałe pola są odczytywane ze strumienia i udostępniane według nazwy za pomocą Java.io.ObjectInputStream.funkcja readFields (). Funkcja ReadFields () jest funkcją niestatyczną, do której można uzyskać dostęp tylko za pośrednictwem obiektu klasy; Jeśli spróbujemy uzyskać metodę bezpośrednio według nazwy klasy, napotkamy błąd. Podczas czytania pól funkcja ReadFields () może podnieść wyjątek."
  1. IoException: Podczas wykonywania ten wyjątek może zostać wyrzucony, jeśli występuje błąd wejściowy lub wyjściowy.
  2. Klasa nie znaleziono wyjątku: Ten błąd może wystąpić, jeśli klasa, dla której obiekty zostały serializowane.
  3. NotactiveException: Ten komunikat o błędzie może pojawić się, jeśli strumień nie jest otwarty i gotowy do odczytania obiektów. Następnie przejdziemy przez składnię i przykład metody ReadFields () klasyInputStream.

Składnia metody ReadFields () w Javie w Ubuntu 20.04

Składnia obsługi Java dla funkcji ReadFields () jest następująca:

Public ObiektinputStream.Getfield ReadFields ();

Obiekt GetFields sprawdza pola, do których można uzyskać dostęp dla tej klasy za pomocą obiektu STREAMClass bieżącego obiektu. Podczas tego konkretnego wywołania metody ReadObject klasy obiekt GetFields dostarczony przez ReadFields jest jedynym, który jest ważny. Tylko po wywołaniu odczytu można odczytać więcej danych prosto ze strumienia.

Parametr metody ReadFields ():

Nie ma parametrów, które akceptuje.

Zwracaj typ Metoda ReadFililds ():

ObjectInputStream to typ powrotu metody. Kiedy zadzwonisz do Getfield, zwróci obiekt o nazwie Getfield, który wskazuje, że pola stałe obiektu nie są serializowane.

Przykład 1: Za pomocą metody Readfield () w Javie w Ubuntu 20.04

Funkcja ReadFields () Java.io.Klasa ObjectInputStream została pokazana w poniższym przykładzie.

Tutaj dołączyliśmy pakiet Java „Java.IO ”ze słowem kluczowym„ import ”. Następnie ustanowiliśmy klasę „RF1” z „publicznym” modyfikatorem. Skonstruowaliśmy główną metodę w klasie „RF1”, która również rzuca „wyjątek”, ponieważ klasa „wyjątku” Java jest również zdefiniowana za pomocą głównej metody, jeśli wystąpiła. Wewnątrz głównego korpusu mamy deklarację obiektów jako „Fos” przez FileOutputStream, „OBJ” przez obiektutputStream, obiekt „FIS” przez FileInputStream i obiekt „OIS” przez klasę „OBIEKININPUTSTREAM”.

Obiekty „FIS” i „FOS” przyjmują plik „Plik.txt ”jako dane wejściowe. Obiekt „OBJ” i „OIS” służy do pokazania strumienia tych plików. Następnie wykorzystujemy metodę WriteObject () z instancją „OBJ”, która nazywa się funkcją ReadFields (). WriteObject pisze liczby całkowite instancji „OBJ”. Strumień zostanie wypłukany metodą Flush (), ponieważ dodaliśmy ją po metodzie WriteObject. Następnie mamy instancję „RF” Readfeilds, które nazywa metodą ReadObject do odczytania obiektu „OIS” i wydrukowania pola.

Następnie mamy klasę statyczną „ReadFields”, która implementuje klasę serializowaną, a następnie deklaruje ciąg „MySt” i ustawia go z wartością ciągów. Tam nazwaliśmy metodę „ReadObject”, która określa instancję „S” dla strumienia wejściowego obiektu. Metoda ReadFields () następnie odczyt pola i zwróć je z dostępem do metody powrotu.

Kompilator Java, bez żadnego IOException, wyświetla pola z metody ReadFields ().

Przykład 2: Korzystanie z metody Readfeilds z walidacją ciągów w Javie w Ubuntu 20.04

Jak widzieliśmy we wcześniejszym przykładzie, ta metoda ReadFields () zwróciła pole po przeczytaniu. Teraz wykonujemy tę samą operację, ale ze złożonym scenariuszem. Zamierzamy potwierdzić pierwszy ciąg, a następnie wyświetlimy drugi.

Skonstruowaliśmy klasę „RF2”, która ma główną metodę. W nawiasach głównej metody zdefiniowaliśmy ciąg jako „S1” i mamy wartość z reprezentacją ciągu. Następnie użyliśmy bloku TRY-Catch. Blok próba ma tworzenie pliku „plik.txt ”, wywołując klasę„ Fileuputstream ”. Instancja jest zdefiniowana jako „pliku” dla wejścia strumienia, które jest przekazywane w obiekcie „Fileout”.

Następnie nazwaliśmy metody „WriteObject” i „Writeutf”. Metoda WriteObject jest używana do zapisywania strumienia z operacji „Demo”, a metoda Writeutf () zabiera „S1” do zapisu ciągu w wyjściu jako podstawowy strumień. Następnie czytamy obiekt metodą ReadObject i wyświetliśmy ciąg. Metoda ReadFields jest stosowana do odczytu pól „S2”. Oświadczenie IF jest wymagane do rejestracji walidacji. Blok połowowy prześledzi wyjątki wejściowe i wyjściowe strumieni.

Następnie mamy klasę „demo” do serializacji łańcucha i do sprawdzania poprawności obiektów deserializowanych, a także zaimplementowaliśmy klasę ObjectInputValidation. Tutaj ustawiliśmy wartość ciągu dla zmiennej „S2”. Mamy metodę „ReadObject” dla tej klasy, która ma metodę odczytu do odczytu pól i metodę rejestracyjnej. Następnie zwróć ciąg w „S2” do głównej metody.

Kompilowanie i uruchamianie wyżej wspomnianego skryptu Java spowoduje następujący wynik.

Przykład 3: Korzystanie z metody getFields (), aby uzyskać pole klasy w Javie w Ubuntu 20.04

Publiczne pole tej klasy, wraz z jej członkami, można uzyskać za pomocą funkcji getfield () „java.Lang.Klasa ”klasa. Funkcja zwraca obiekty pola reprezentujące żądane pole tej klasy.

Nasza klasa „Getfield” jest tworzona z obiektem „MyObj” w nim. Następnie zastosowaliśmy główną metodę w klasie. Tam mamy zmienną ClassName, która wywołała metodę Forname (). Obiekt powiązany z klasą zostanie zwrócony tą metodą. Następnie wykorzystaliśmy metodę getfield (), aby uzyskać pole klasy.

Po skompilowaniu kodu otrzymaliśmy nazwę obiektu klasy i pole klasy poniżej.

Wniosek

Aby odczytać serializowane dane do transmisji sieciowej, użyj metod ReadFields (). Wartości pola serializacji są odczytywane ze strumienia za pomocą metody odczytu, co następnie udostępnia je za pośrednictwem klasy Getfield. Serializowalna metoda ReadObject jest jedynym miejscem, z którego można wywołać metodę odczytu. Ponadto wprowadziliśmy inną metodę, jaką jest Getfield (), która zwraca nazwę pola określonej klasy.