Avatar ·

Por qué se necesitan campos transient en Java y cómo funcionan durante la serialización

¡Hola a todos! Estoy aprendiendo Java y me encontré con el modificador `transient` para campos de clase. Leí la documentación, pero no entendí del todo para qué sirve. Tengo una clase de usuario simple: ```java public class User implements Serializable { private String username; private String password; private int age; // getters y setters } ``` Cuando serializo un objeto de esta clase en un archivo, quiero guardar username y age, pero no quiero guardar password — ¡son datos confidenciales! Intenté simplemente no escribir password manualmente, pero al deserializar el campo password resulta ser `null`, lo que rompe la lógica de autenticación. Preguntas: 1. ¿Cómo excluir correctamente password de la serialización para que después de la deserialización pueda restaurarlo (por ejemplo, desde otra fuente)? 2. ¿Por qué no se puede simplemente usar `static` o hacer que el campo sea temporal? 3. ¿Hay trampas al usar `transient` con colecciones u objetos anidados? ¡Agradeceré ejemplos!