Variables Java transient

31/Ene/2015 Java Deja un comentario

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:

  1. public class Usuario implements Serializable {
  2. private String nombre;
  3. private transient String password;
  4. }

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:

  1. public class Usuario implements Serializable {
  2. private String nombre;
  3. private transient String password;
  4.  
  5. public Usuario(String nombre, String password) {
  6. this.nombre = nombre;
  7. this.password = password;
  8. }
  9.  
  10. public String toString() {
  11. String pwd = (password == null) ? "(n/a)" : password;
  12. return "Información Usuario: \n Nombre: " + nombre + "\n Contraseña: " + pwd;
  13. }
  14. }

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.

  1. Usuario miusuario = new Usuario("Victor", "1234");
  2. System.out.println(miusuario);
  3. o.writeObject(miusuario);
  4. 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:

  1. System.out.println("Recupero el objeto " + new Date());
  2. miusuario = (Usuario) in.readObject();
  3. 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


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*