Avatar ·

Por que campos transient são necessários em Java e como funcionam na serialização?

Olá a todos! Estou aprendendo Java e me deparei com o modificador `transient` para campos de classe. Li a documentação, mas não entendi completamente para que ele serve. Tenho uma classe de usuário simples: ```java public class User implements Serializable { private String username; private String password; private int age; // getters e setters } ``` Quando serializo um objeto desta classe em um arquivo, quero salvar username e age, mas não quero salvar password — são dados confidenciais! Tentei simplesmente não escrever password manualmente, mas na desserialização o campo password fica `null`, o que quebra a lógica de autenticação. Perguntas: 1. Como excluir corretamente password da serialização, para que após a desserialização eu possa restaurá-lo (por exemplo, de outra fonte)? 2. Por que não posso simplesmente usar `static` ou tornar o campo temporário? 3. Existem armadilhas ao usar `transient` com collections ou objetos aninhados? Ficarei grato por exemplos de código.