Java - serializable ?

The Dealer

Power Member
Boa tarde.

Será que alguem me pode explicar para que serve a serialização? É que não consigo mesmo compreender. Já vi a explicação teórica mas fiquei na mesma.

Cumprimentos a todos.
 
A funçao do serializable é preparar objectos para estes serem escritos para um ficheiro. Entre outras coisas, penso que o principal é acrescentar uma especie de numero de serie aos objectos no ficheiro, para o java saber que classe os criou. Se por algum motivo escreves um ficheiro de objectos e alteras a classe que os criou, quando os voltares a tentar ler vai dar uma exepçao em que refere que a versao é diferente.

Se sair na frequencia e responderes isto penso que ja tenhas a pergunta certa.

Baderous, nao é necessariamente isso, é apenas a preparaçao para os objectos poderem ser armazenados em ficheiros, quem trata da armazenaçao é sempre o stream writer e o file writer se nao estou em erro(ja ha uns tempos que nao mecho nisso).
 
Boas, é um facto que se não for colocado um valor para o serialVersionUID (o tal número de série que já foi referido), este é gerado automaticamente. No entanto, isto não é aconselhável, uma vez que o número gerado vai ser baseado num hash do .java da classe, o que faz com que qualquer alteração simples (e.g. mudar o nome de uma variável) resulte num valor gerado diferente.
 
imagina que tens uma class agenda k lá dentro tem um array com informaçao de pessoas (nome, idade, morada, etc..)

se kizeres guardar essa inforamçao podes guardar num ficheiro (base de dados por exemplo) ou entao o serializable trata de guardar tudo isso sem teres k te preocupar com nada.

imagina k o programa está em execuçao e k tens uma lista de pessoas guardadas no array, ao guardares com o serializable, a tua class agenda é guardada em formato binario se nao me engano com toda a informaçao k tinha antes de teres fechado o programa. assim quando abrires de novo o programa basta leres esse ficheiro k a tua agenda é automaticamente preenchida e volta ao estado em k estava no momento da ultima utilizaçao do programa


talvez uma ou outra coisa k disse nao seja o k aconteca de verdade, mas o k interessa é perceberes o k isso realmente faz
 
imagina que tens uma class agenda k lá dentro tem um array com informaçao de pessoas (nome, idade, morada, etc..)

se kizeres guardar essa inforamçao podes guardar num ficheiro (base de dados por exemplo) ou entao o serializable trata de guardar tudo isso sem teres k te preocupar com nada.

(...)

O serializable é um complemento obrigatorio, mas nao é ele que trata de guardar tudo. Isso é para o objectoutputstream e objectinputstream. Tem que se ter cuidado porque isto a responder em frequencia teorica estaria errado.
Na resposta mais simplista possivel o serializable prepara os objectos para estes poderem ser escritos pela classe que referi.

Em pergunta de frequencia a minha responsta inicial com o complemento do allfromcairo darao a cotaçao total a questao.
 
A serialização não serve exclusivamente para carregar para ficheiro, a serialização permite passar um objecto para um array de bytes de forma simples, sem ser necessário programares a leitura ou a escrita do objecto.

Depois com esse array de bytes poderás fazer o armazenamento/propagação desejada.
 
Já tou meio enferrujado mas se queres colocar um objecto numa stream (pra ficheiro, socket e outras) ele tem de ser "serializavel".
 
Back
Topo