Duvida com variaveis

2 respostas
LPJava

ae pessoal lendo o livro do kathy nao entendi quando ele falou:

[/b] as variaveis de referencia finais nao podem referenciar um objeto diferente se ja estiverem um objeto atribuido a elas. [/b]

e mais uma pergunta: o que seria um modificador transient e pq so pode ser aplicado a variaveis de instancia e quando utilizo? mais o volatile tb so pode ser aplicado a variaveis de instancia qual diferença…

fiquei com essas duvidas ao ler o kathy, ja o deitel nem fala sobre esses modificadores… quem puder me dar esse help!!

2 Respostas

kicolobo

Bom, vamos lá:

as variaveis de referencia finais nao podem referenciar um objeto diferente se ja estiverem um objeto atribuido a elas.

Uma variável de referência final só tem o seu valor definido uma única vez durante a execução do seu aplicativo. Se ela não for um tipo primitivo (como int, double, char, etc.), ela é uma variável que referencia alguma instância de um objeto qualquer. O que isto quer dizer: quer dizer que você só pode definir o valor desta variável (no caso, a referência a um outro objeto) uma única vez durante o tempo de execução do seu aplicativo.
Vou lhe dar um exemplo em código:

class teste {
      public final Object variavelFinal;

      public teste(){}

      public static void main(Stirng args[])
      {
         teste novaInstancia = new teste();
         teste.variavelFinal = new String("Iniciei a variável final pela primeira e única vez durante o ciclo de vida da aplicação");
         // Pronto, agora já iniciei a variável, que referencia um objeto do tipo String.
        // Agora, suponhamos que eu me esqueça de tratar-se de uma variável final e tente mudar o seu valor novamente.
        teste.variavelFinal = new Integer(666);
        // Um erro será disparado. (não me lembro se em tempo de execução ou de compilação)
      }
   }

Variáveis final servem como constantes dentro do seu sistema. Porém uma constante aprimorada, porque você pode definir o seu valor (apenas uma vez, repetindo) durante a execução do seu programa.

e mais uma pergunta: o que seria um modificador transient e pq so pode ser aplicado a variaveis de instancia e quando utilizo? mais o volatile tb so pode ser aplicado a variaveis de instancia qual diferença…

Para entender o modificador transient, primeiro você deve aprender serialização em Java. Serializar uma instância de uma classe corresponde a salvar o seu estado (o valor de suas variáveis, referências, etc) em um arquivo que, posteriormente, pode ser carregado novamente. Se você declara uma variável com o modificador transient, o seu valor não será incluido no arquivo gerado após a serialização da classe. Só pode ser portanto aplicado a variáveis de instância porque são os valores destas variáveis que queremos persistir em um arquivo e recuperar novamente em tempo de execução. Sacou?

LPJava

opa parceiro valeu pela ajuda!! deu para ter uma noção sim!

Criado 9 de outubro de 2006
Ultima resposta 10 de out. de 2006
Respostas 2
Participantes 2