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!