Przejściowe słowo kluczowe w Javie: co to jest i jak działa?

Opublikowany: 2022-03-06

Podobnie jak wszystkie inne języki programowania, język programowania Java ma listę zastrzeżonych słów, które mają określone znaczenie. Ten zestaw 52 słów zarezerwowanych przez Javę jest znany jako słowa kluczowe. Ponieważ mają one predefiniowane znaczenie, programiści nie mogą używać słów kluczowych do nazywania swoich klas, obiektów, zmiennych i innych identyfikatorów. Jedno z tych 52 słów kluczowych jest słowem kluczowym przejściowym – na którym skupimy się na naszym blogu!

Spis treści

Zrozumienie przejściowego słowa kluczowego w Javie

Transient to jeden z bardziej użytecznych modyfikatorów występujących w języku programowania Java. Podstawowa rola słowa kluczowego transient występuje w przypadkach serializacji. Modyfikator transient można zastosować do elementów członkowskich pola klasy, aby wyłączyć serializację na tych określonych elementach członkowskich.

Mówiąc najprościej, słowo kluczowe transient w Javie może być używane przez programistę, aby uniknąć serializacji. Jeśli jakiś konkretny obiekt dowolnej struktury danych został zdefiniowany przez programistę jako przejściowy, nie zostanie on zserializowany. W rezultacie można użyć słowa kluczowego transient, aby wskazać maszynie JVM (Java Virtual Machine), że zmienna transient nie będzie częścią żadnego trwałego stanu obiektu.

Spróbujmy zrozumieć działanie słowa kluczowego transient w Javie na bardzo prostym przykładzie. Najpierw utworzymy klasę Address i zdefiniujemy dla niej trzy atrybuty — streetName, areaName i houseNumber. Zachowamy to jako przejściowe, ponieważ nie chcemy przechowywać ani zapisywać trzeciego atrybutu – numer domu.

class Adres implementuje Serializable

{

prywatne String nazwa ulicy;

private String areaName;

prywatne przejściowe Ciąg numer domu;

//Settery i Gettery

}

Teraz zserializujmy wystąpienie klasy Address.

spróbuj {

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“adresinfo.ser”));

Adres a = nowy Adres();

a.setstreetName("MIG");

a.setareaName („Vikas Nagar”);

emp.sethouseNumber(“110”);

//Serializuj obiekt

oos.writeObject(a);

oos.zamknij();

} catch (wyjątek e)

{

System.out.println(e);

}

Jeśli nasz kod działa poprawnie, informacja o numerze domu nie zostałaby zapisana, ponieważ zdefiniowaliśmy ją jako przejściową. Teraz spróbujemy zdeserializować go z powrotem do oryginalnego obiektu i sprawdzić, czy informacje zostały zapisane, czy nie.

spróbuj {

ObjectInputStream o = new ObjectInputStream(new FileInputStream(“adresinfo.ser”));

//Odczytaj obiekt z powrotem

Adres readAddressInfo = (Adres) o.readObject();

System.out.println(odczytAddressInfo.getstreetName());

System.out.println(odczytAddressInfo.getareaName());

System.out.println(odczytAdresInfo.gethouseNumber());

o.zamknij();

} catch (wyjątek e)

{

System.out.println(e);

}

Jeśli uruchomisz powyższy fragment programu Java, otrzymasz następujące dane wyjściowe:

MIG

Vikas Nagar

zero

Jak widać informacja 'houseNumber' nie została zapisana do stanu trwałego z powodu serializacji, dlatego na wyjściu otrzymujemy wartość 'null'. Właśnie dlatego używa się słowa kluczowego transient – ​​do przechowywania wartości w zmiennych w sposób, który nie jest stały, ale przejściowy.

Przypadki użycia słowa kluczowego „przejściowe” w Javie

Teraz, gdy rozumiesz słowo kluczowe transient i co ono robi, pojawia się następne logiczne pytanie – kiedy używamy słowa kluczowego transient?

Poszerzmy naszą wiedzę na temat przejściowych słów kluczowych, przyglądając się dogłębnie niektórym sytuacjom, w których skorzystasz z zastosowania przejściowych słów kluczowych.

Oto kilka często spotykanych przypadków użycia, o których należy pamiętać:

  • Pierwszy przypadek użycia przejściowego słowa kluczowego występuje w sytuacjach, w których możesz mieć pola danych, które są obliczane lub wyprowadzane z innych pól w instancji klasy. W rezultacie te pola muszą być obliczane programowo i zależą od innych wartości. Dlatego zamiast mieć takie pola trwałe, można je nieserializować za pomocą słowa kluczowego transient. Przykłady takich wartości przejściowych obliczonych na podstawie innych liczb mogą obejmować wartości oparte na znacznikach czasu, wartości oparte na wartościach procentowych itp. We wszystkich tych przypadkach obliczasz wartość zmiennej na podstawie aktualnie istniejących wartości.
  • Innym ważnym przypadkiem użycia może być praca z dowolnym rodzajem bezpiecznych informacji, które w żadnym wypadku nie powinny zostać ujawnione poza maszyną JVM, a następnie można ich nie zserializować za pomocą słowa kluczowego transient.
  • Pola, które nie są oznaczone jako „serializowalne” w pakiecie Java Development Kit, mogą być używane ze słowem kluczowym przejściowym. Należy zauważyć, że wszystkie klasy Java, które nie implementują interfejsu serializowalnego, nie mogą być serializowane, ponieważ nie ma do nich odniesień w żadnej klasie możliwej do serializacji. W rezultacie mogą one zgłosić „java.io.NotSerializableException”, jeśli nie są oznaczone jako „przejściowe” przed serializacją klasy głównej.
  • I wreszcie, zdarzają się sytuacje, w których serializacja niektórych pól nie ma sensu. Na przykład, jeśli w kodzie dodano odwołanie do rejestratora, nie chcesz serializować tych informacji. Należy serializować informacje, które reprezentują stan wystąpienia. Z drugiej strony rejestratory nie reprezentują żadnego stanu, więc nie ma sensu ich serializować. Dlatego powinny być używane ze słowem kluczowym transient.

Na zakończenie

Omówione powyżej przypadki użycia nie są w żaden sposób wyczerpujące. Poeksperymentuj ze słowem kluczowym transient i wymyśl własne przypadki użycia. W końcu słowa kluczowe są stworzone dla programistów, a większość słów kluczowych będziesz w stanie wykorzystać tylko wtedy, gdy będziesz wiedział, jak działają i co oznaczają.

Na tym kończymy ten blog dotyczący przejściowych słów kluczowych w Javie. Jest to jedna z bardziej wstępnych koncepcji, którą musisz opanować, aby rozwijać się w swojej karierze programistycznej. Dziedzina tworzenia oprogramowania jest niezwykle dynamiczna, ale bardzo przyjazna, jeśli jesteś gotowy, aby wyciągnąć skarpetki i dołożyć wszelkich starań!

W upGrad szkoliliśmy i prowadziliśmy studentów z całego świata, należących do różnych dziedzin, i pomogliśmy im rozpocząć karierę w tworzeniu oprogramowania. Nasz PGP w tworzeniu oprogramowania – specjalizacja w tworzeniu pełnego stosu jest przeznaczony dla początkujących i doświadczonych profesjonalistów. Oprócz profesjonalnych korepetytorów i najnowocześniejszych materiałów edukacyjnych, otrzymujesz również utalentowanych kolegów, kompleksowe wsparcie w zakresie stażu i indywidualny mentoring z liderami branży. Sprawdź zawartość kursu i zarejestruj się wkrótce!

1. Co to jest słowo kluczowe transient w Javie?

Słowa kluczowe przejściowe w Javie mogą służyć do uniknięcia serializacji obiektu. Używając tymczasowych słów kluczowych, zapewniasz, że wartość przechowywana przez dane pole nie będzie trwała.

2. Z jakimi elementami w Javie można używać słowa kluczowego transient?

Możesz użyć słowa kluczowego transient w Javie, aby nie serializować klasy, zmiennej, obiektu lub pola.

3. Czym różnią się słowa kluczowe transient i volatile w Javie?

Słowo kluczowe transient służy do uniknięcia procesu serializacji, podczas gdy słowo kluczowe volatile jest używane ze zmienną, dzięki czemu nie jest przechowywane w pamięci głównej.