1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Java - serializable ?

Discussão em 'Programação' iniciada por The Dealer, 21 de Abril de 2009. (Respostas: 9; Visualizações: 7090)

  1. The Dealer

    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.
     
  2. Baderous

    Baderous Banido

    Serve para armazenares objectos de forma persistente, isto é, escrever objectos em ficheiros.
     
  3. bikeman

    bikeman Power Member

    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).
     
  4. Baderous

    Baderous Banido

  5. bikeman

    bikeman Power Member

    Hehe, ainda me lembro de algumas coisitas das aulas:)
     
  6. AliFromCairo

    AliFromCairo Power Member

    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.
     
  7. ceptrus

    ceptrus Power Member

    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
     
  8. bikeman

    bikeman Power Member

    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.
     
  9. syqe

    syqe Power Member

    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.
     
  10. BigPT

    BigPT Power Member

    Já tou meio enferrujado mas se queres colocar um objecto numa stream (pra ficheiro, socket e outras) ele tem de ser "serializavel".
     

Partilhar esta Página