Переходное ключевое слово в Java: что это такое и как оно работает?

Опубликовано: 2022-03-06

Как и все другие языки программирования, язык программирования Java имеет список зарезервированных слов, которые имеют определенное значение. Этот набор из 52 слов, зарезервированных Java, известен как ключевые слова. Поскольку они имеют предопределенное значение, программисты не могут использовать ключевые слова для обозначения своих классов, объектов, переменных и других идентификаторов. Одним из этих 52 ключевых слов является переходное ключевое слово, которое будет в центре внимания нашего блога!

Оглавление

Понимание переходного ключевого слова в Java

Transient — один из наиболее полезных модификаторов, присутствующих в языке программирования Java. Ключевое слово transient играет основную роль в случаях сериализации. Модификатор transient можно применить к членам поля класса, чтобы отключить сериализацию для этих конкретных членов.

Проще говоря, ключевое слово transient в Java может использоваться программистом, чтобы избежать сериализации. Если какой-либо конкретный объект любой структуры данных был определен программистом как временный, он не будет сериализован. В результате вы можете использовать ключевое слово transient, чтобы указать JVM (виртуальная машина Java), что ваша временная переменная не будет частью какого-либо постоянного состояния объекта.

Давайте попробуем понять работу ключевого слова transient в Java на очень простом примере. Во-первых, мы создадим класс Address и определим три атрибута для класса — streetName, areaName и houseNumber. Мы оставим его временным, так как мы не хотим хранить или сохранять третий атрибут — номер дома.

адрес класса реализует Serializable

{

частная строка streetName;

частная строка areaName;

частная переходная строка houseNumber;

//Сеттеры и геттеры

}

Теперь давайте сериализуем экземпляр класса Address.

попробуй {

ObjectOutputStream oos = новый ObjectOutputStream(новый FileOutputStream("addressinfo.ser"));

Адрес a = новый адрес();

a.setstreetName("МИГ");

a.setareaName("Викас Нагар");

emp.sethouseNumber («110»);

//Сериализация объекта

oos.writeObject(а);

оос.закрыть();

} поймать (Исключение e)

{

Система.out.println(e);

}

Если бы наш код работал правильно, информация 'houseNumber' не была бы сохранена, так как мы определили ее как временную. Теперь попробуем десериализовать его обратно в исходный объект и посмотреть, сохранилась информация или нет.

попробуй {

ObjectInputStream o = новый ObjectInputStream (новый FileInputStream («addressinfo.ser»));

//Прочитать объект обратно

Адрес readAddressInfo = (Адрес) o.readObject();

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

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

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

о.закрыть();

} поймать (Исключение e)

{

Система.out.println(e);

}

Если вы запустите приведенную выше часть Java-программы, вы получите следующий вывод:

МИГ

Викас Нагар

нулевой

Как видите, информация «houseNumber» не была сохранена в постоянном состоянии из-за сериализации, и поэтому мы получаем значение «null» в качестве вывода. Именно поэтому используется ключевое слово transient — для хранения значений в переменных не постоянным, а временным образом.

Варианты использования ключевого слова «transient» в Java

Теперь, когда вы понимаете, что такое ключевое слово transient и что оно делает, возникает следующий логический вопрос: когда мы используем ключевое слово transient?

Давайте расширим наши знания о временном ключевом слове, подробно рассмотрев некоторые ситуации, в которых вам было бы полезно использовать переходные ключевые слова.

Вот некоторые часто встречающиеся варианты использования, о которых вам следует помнить:

  • Первый вариант использования ключевого слова transient — это ситуации, когда у вас могут быть поля данных, которые либо вычисляются, либо выводятся из некоторых других полей в экземпляре класса. В результате эти поля нужно вычислять программно, и они зависят от других значений. Вот почему вместо того, чтобы сохранять такие поля, их можно было бы не сериализовать с помощью ключевого слова transient. Примеры таких переходных значений, рассчитанных по другим цифрам, могут включать значения на основе меток времени, значения на основе процентов и т. д. Во всех этих случаях вы вычисляете значение переменной на основе существующих в настоящее время значений.
  • Другой важный вариант использования может быть, когда вы работаете с любым типом защищенной информации, которая ни в коем случае не должна просачиваться за пределы JVM, тогда она может быть несериализована с использованием ключевого слова transient.
  • Поля, которые не помечены как «сериализуемые» внутри Java Development Kit, могут использоваться с ключевым словом transient. Здесь важно отметить, что все классы Java, которые не реализуют сериализуемый интерфейс, не могут быть сериализованы, поскольку на них нет ссылок ни в одном сериализуемом классе. В результате они могут генерировать «java.io.NotSerializableException», если не отмечены как «переходные» перед сериализацией основного класса.
  • И, наконец, бывают случаи, когда нет смысла сериализовать некоторые поля. Например, если вы добавили в свой код ссылку на регистратор, вам не нужно сериализовать эту информацию. Вы должны сериализовать информацию, которая представляет состояние экземпляра. С другой стороны, регистраторы не представляют никакого состояния, поэтому их сериализация бесполезна. Таким образом, их следует использовать с ключевым словом transient.

В заключение

Варианты использования, рассмотренные выше, ни в коем случае не являются исчерпывающими. Поэкспериментируйте с ключевым словом transient и придумайте свои варианты использования. В конце концов, ключевые слова созданы для программистов, и вы сможете составить большинство ключевых слов только тогда, когда будете знать, как они работают и что они означают.

На этом мы подошли к концу этого блога о переходных ключевых словах в Java. Это одна из наиболее вводных концепций, которую вы должны освоить, чтобы расти в своей карьере разработчика программного обеспечения. Область разработки программного обеспечения чрезвычайно динамична, но очень гостеприимна, если вы готовы выложиться и приложить все усилия!

В upGrad мы наставляем и направляем студентов со всего мира, принадлежащих к разным областям, и помогаем им начать свою карьеру в разработке программного обеспечения. Наш PGP в разработке программного обеспечения — специализация в разработке полного стека предназначен для новичков и опытных профессионалов. Помимо опытных наставников и самых современных учебных материалов, вы также получаете талантливых коллег, всестороннюю поддержку при трудоустройстве и индивидуальное наставничество с лидерами отрасли. Так что ознакомьтесь с содержанием курса и скорее регистрируйтесь!

1. Что такое временное ключевое слово в Java?

Ключевые слова Transient в Java можно использовать, чтобы избежать сериализации объекта. Используя временные ключевые слова, вы гарантируете, что значение, хранящееся в конкретном поле, не будет постоянным.

2. С какими элементами в Java можно использовать ключевое слово transient?

Вы можете использовать ключевое слово transient в Java, чтобы не сериализовать класс, переменную, объект или поле.

3. Чем ключевое слово transient и ключевое слово volatile отличаются в Java?

Ключевое слово transient используется, чтобы избежать процесса сериализации, тогда как ключевое слово volatile используется с переменной, чтобы она не сохранялась в основной памяти.