[SCJP] Dúvida ExamLab transient

Olá amigos, estou fazendo um simulado do ExamLabs e encontrei uma questão que perguntava:

É possível inserir um modificador transient em uma variável static?
Respondi que não, pois as variáveis estáticas não podem ser serializadas… Mas logo descobri que respondi errado… :frowning:

Rolou uma dúvida agora…

O modificador transient tem alguma outra utilidade?

Abs.
Paulo Gervásio.

Fala gervas-IO, beleza?

O conceito de serialização está preocupado com o estado atual do objeto. Apenas os dados associados com uma instância específica de uma classe são serializados. Portanto, variáves estáticas são ignoradas (automaticamente) pela JVM durante a serialização, porque elas não pertencem à instância serializada, mas sim a classe.

O compilador não impede que você declare uma variável utilizando a seguinte sintaxe:

transient static int qualquerNumero = 10;

Mas podemos dizer que é uma redundância.

Link interessante:
http://www.coderanch.com/t/252191/java-programmer-SCJP/certification/static-transient-variable

O livro da Kathy Sierra diz sobre o modificador static:
“As variáveis e métodos marcados com static pertencem a classe, em vez de a qualquer instância específica.”

Ficou meio embaraçoso? hehehe

Abraço.

Schwingel

Blz Schwingel!

Já imaginava isso, tenho visto coisas desse tipo no compilador nesses últimos dias, tipo:

  • métodos private final
  • construtores protect abstract

esse aqui tb é muito interessante:

http://www.guj.com.br/posts/list/209239.java

Valeu!
Abs!