Artículos
Java

Variables Java transient

31/Ene/2015

Uno de los modificadores que podemos aplicar a una variable Java es el transient. Las variables Java transient sirven para demarcar el carácter temporal o transitorio de dicha variable, es decir, que no siempre se tendrá acceso al valor de la variable.

Pero, realmente, ¿qué implican las variables Java transient? Cuando definimos variables Java transient lo que estamos indicando es que en caso de que serialicemos el objeto que contiene esa variable transient, si valor no se serializará.

Vamos a pensar en un usuario con nombre y contraseña que definamos de la siguiente forma:

public class Usuario implements Serializable {	
  private String nombre;
  private transient String password;
}

Esto implicaría que cuando se serialice el valor que haya en la variable password, al ser declarada como transient, no se va a serializar.

Ampliemos un poco más el código de la clase Usuario:

public class Usuario implements Serializable {	
  private String nombre;
  private transient String password;

  public Usuario(String nombre, String password) {
    this.nombre = nombre;
    this.password = password;
  }

  public String toString() {
    String pwd = (password == null) ? "(n/a)" : password;
    return "Información Usuario: \n   Nombre: " + nombre + "\n Contraseña: " + pwd;
  }
}

Hemos añadido un método toString() que nos vuelque la información y un constructor para poder instanciar la clase con los valores de usuario y password.

Ahora vamos a crear una segunda clase que nos ayude a serializar y deserializar un usuario.

Usuario miusuario = new Usuario("Victor", "1234");
System.out.println(miusuario);
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("user.out"));
o.writeObject(miusuario);
o.close();

Si visualizamos el contenido del objeto Usuario veremos que sale tanto el usuario como la password. El contenido lo hemos serializado en un fichero user.out mediante un ObjectOutputStream y un FileOutputStream.

Ahora vamos a deserializarlo:

ObjectInputStream in = new ObjectInputStream(new FileInputStream("user.out"));
System.out.println("Recupero el objeto " + new Date());
miusuario = (Usuario) in.readObject();
System.out.println(miusuario);

Veremos que al volcar el objeto Usuario creado desde los datos serializados no está el valor de las variables Java transient, es decir, en este caso, del password. Por lo tanto no veremos el valor.

Como hemos podido ver en este caso las variables Java transient nos servirán para no serializar aquella información que no queramos propagar.

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
0 Comentarios
Opiniones integradas
Ver todos los comentarios