palabra clave transitoria en Java

transitorio es un modificador de variables utilizado en la serialización . En el momento de la serialización, si no queremos guardar el valor de una variable en particular en un archivo, usamos la palabra clave transitoria . Cuando JVM encuentra una palabra clave transitoria , ignora el valor original de la variable y guarda el valor predeterminado de ese tipo de datos variable.

La palabra clave transitoria juega un papel importante para cumplir con las restricciones de seguridad. Hay varios ejemplos de la vida real en los que no queremos guardar datos privados en un archivo. Otro uso de la palabra clave transitoria es no serializar la variable cuyo valor se puede calcular/derivar utilizando otros objetos o sistemas serializados, como la edad de una persona, la fecha actual, etc.
Prácticamente serializamos solo aquellos campos que representan un estado de instancia, después de toda serialización se trata de guardar el estado de un objeto en un archivo. Es un buen hábito usar una palabra clave transitoria con campos confidenciales privados de una clase durante la serialización.

// A sample class that uses transient keyword to
// skip their serialization.
class Test implements Serializable
{
    // Making password transient for security
    private transient String password;
  
    // Making age transient as age is auto-
    // computable from DOB and current date.
    transient int age;
  
    // serialize other fields
    private String username, email;
    Date dob;
  
    // other code
}

transitorio y estático: dado que los campos estáticos no son parte del estado del objeto, no hay uso/impacto de usar la palabra clave transitoria con variables estáticas. Sin embargo, no hay ningún error de compilación.

transitoria y final: las variables finales se serializan directamente por sus valores, por lo que no tiene uso/impacto declarar la variable final como transitoria . Sin embargo, no hay ningún error en tiempo de compilación.

// Java program to demonstrate transient keyword
// Filename Test.java
import java.io.*;
class Test implements Serializable
{
    // Normal variables
    int i = 10, j = 20;
  
    // Transient variables
    transient int k = 30;
  
    // Use of transient has no impact here
    transient static int l = 40;
    transient final int m = 50;
  
    public static void main(String[] args) throws Exception
    {
        Test input = new Test();
  
        // serialization
        FileOutputStream fos = new FileOutputStream("abc.txt");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(input);
  
        // de-serialization
        FileInputStream fis = new FileInputStream("abc.txt");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Test output = (Test)ois.readObject();
        System.out.println("i = " + output.i);
        System.out.println("j = " + output.j);
        System.out.println("k = " + output.k);
        System.out.println("l = " + output.l);  
        System.out.println("m = " + output.m);
    }
}

Producción :

i = 10
j = 20
k = 0
l = 40
m = 50

Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *