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.
respuesta (A)
d.- error de ejecuciom
C- Ya que nombre y edad utilizan la palabra reservada transient.
A
Toma en cuenta que hay serialización
Es un error de ejecucion
d porque la clase implementa Serializable.
Es la C, ya que la palabra reservada "transient" permite la NO persistencia de los datos de un objeto al momento de ser serializable.
disculpa amigo no me queda muy bien claro el concepto de serializableno se si puedas ayudarme por que de inicio pensé que la respuesta era A hasta que vi los comentarios
Es la C por que cuando se construye el objeto "despues" de tipo Persona imprime valores que se encuentran nulos ya que en su constructor no se le paso ningun parametro….. el objeto que si recibe parametros es el de "antes" y ese no se mando a imprimir
Error de ejecución
La C es la correcta !
C