A serialização de objetos na linguagem de programação Java permite representar o estado de um objeto como uma sequência de bytes que podem ser armazenados em um arquivo ou banco de dados. Para impedir que o conteúdo de determinado atributo seja convertido em bytes no processo padrão de serialização, este atributo deve ser declarado na classe com o modificador
- A)final.
Errada: final indica que a referência ou o valor do atributo não deve ser reatribuído, mas não impede serialização.
- B)native.
Errada: native é usado em métodos que se conectam a código nativo, não em atributos nem em serialização.
- C)volatile.
Errada: volatile trata de visibilidade e concorrência entre threads, não de persistência de campos.
- D)transient.
Certa: transient marca o atributo para não ser serializado pelo mecanismo padrão do Java.
- E)synchronized.
Errada: synchronized é usado para controle de acesso concorrente em métodos e blocos, não em atributos.
Gabarito: D
Na serialização em Java, o programa transforma o estado de um objeto em bytes para guardar em arquivo, enviar pela rede ou persistir em banco. Só que nem todo atributo precisa viajar junto nessa “mala de bytes”. Alguns campos podem ser ignorados pelo mecanismo padrão de serialização, e é aí que entra o modificador certo. Quando você declara um atributo como transient, você está dizendo para a JVM não serializar aquele campo no processo padrão. Em outras palavras, o atributo fica fora da foto oficial do objeto quando ele é convertido em bytes. Se o objeto for desserializado depois, esse campo não vem salvo e assume o valor padrão da linguagem. Isso é diferente de final, volatile, native e synchronized, que têm outras funções na linguagem, mas não servem para excluir um atributo da serialização. A própria especificação do Java Serialization trata transient como o marcador para campos que não devem ser persistidos automaticamente. Então o gabarito é D porque transient é o modificador usado exatamente para impedir que o conteúdo do atributo seja convertido em bytes na serialização padrão. É a clássica palavra-chave que faz o campo “sumir” da mala de viagem do objeto.