Piensa la respuesta antes de abrirla. Todas las opciones parecen razonables, y casi siempre hay un detalle que lo cambia todo.
Pregunta Java · Serialización
¿Cuál es el resultado de compilar y ejecutar la clase Persona?
import java.io.*;
public class Persona implements Serializable {
transient String nombre;
transient int edad;
String ocupacion;
public Persona(String nombre, int edad, String ocupacion) {
this.edad = edad;
this.nombre = nombre;
this.ocupacion = ocupacion;
}
public String toString() {
return "Soy " + nombre + ", tengo " + edad + " años y soy " + ocupacion;
}
public static void main(String[] args) throws Exception {
Persona antes = new Persona("Yo", 30, "programador");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("/dir/ejemplo.txt"));
out.writeObject(antes);
ObjectInputStream input = new ObjectInputStream(new FileInputStream("/dir/ejemplo.txt"));
Persona despues = (Persona) input.readObject();
System.out.println(despues);
}
}- Soy Yo, tengo 30 años y soy programador
- Soy Yo, tengo 30 años y soy null
- Soy null, tengo 0 años y soy programador
- Error de ejecución
Ver la respuesta
Respuesta: c.
java PersonaSoy null, tengo 0 años y soy programador
transient marca un campo para que no se guarde al serializar. Al leer el objeto, esos campos reciben su valor por omisión: null para nombre y 0 para edad. Solo ocupacion viaja en el archivo. Tampoco se ejecuta el constructor de Persona, que podría haberles dado otro valor.
Se usa para lo que no tiene sentido o no debe guardarse: contraseñas, cachés, conexiones abiertas. El enunciado original pedía «la clase Test», pero el código solo tiene la clase Persona. Para ejecutarlo creamos antes la carpeta /dir.
Más preguntas de Java
- El orden de un HashSet
- wait() sin el monitor correcto
- start() con un argumento
- Dos hilos y una variable compartida
- wait() fuera de synchronized
- Leer más allá del final de un archivo
- binarySearch con null
- Serializar una clase cuyo padre no es Serializable
- Clases internas anidadas
- Llamar a run() en vez de start()
- Un assert que nunca falla
- HashSet sin equals ni hashCode
Pregunta publicada en 2014 y revisada en octubre de 2026. La respuesta se comprobó compilando y ejecutando el código con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.