Difference between revisions of "Entradas e Saídas em Java/Exemplo 04: Serialização de Objectos"

From Wiki**3

< Entradas e Saídas em Java
(Serialização de Objectos)
Line 37: Line 37:
 
}
 
}
 
</source>
 
</source>
 +
 +
Note-se que a função '''main''' declara o lançamento de excepções. Esta prática foi usada por simplicidade de exposição e não é ideal em geral: a função deveria tratar as excepções.
  
 
[[category:Ensino]]
 
[[category:Ensino]]

Revision as of 02:01, 12 December 2020

Serialização de Objectos

Serialização de tipos primitivos e de objectos: a interface Serializable. Elementos não serializáveis: a palavra chave transient.

Exemplo: Zorg e Zog

class Alienígena implements Serializable {
  String _nome;
  transient String _segredo = "7";
  public Alienígena(String n) { _nome = n; _segredo = _nome + _nome.length(); }
  public void voing() { System.out.println(_nome + (_segredo != null ? _segredo : "")); }
}
public class Serialização {
  public static void main(String[] args) throws IOException, ClassNotFoundException {

    Alienígena a1 = new Alienígena("Zorg"), a2 = new Alienígena("Zog");
    a1.voing();  //output: ZorgZorg4
    a2.voing();  //output: ZogZog3

    ObjectOutputStream out =
      new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("raw.dat")));
    out.writeObject(a1); out.writeObject(a2);
    out.close();

    ObjectInputStream in =
      new ObjectInputStream(new BufferedInputStream(new FileInputStream("raw.dat")));
    Alienígena r1 = (Alienígena)in.readObject();  // pode lançar “StreamCorruptedException”
    Alienígena r2 = (Alienígena)in.readObject();
    r1.voing();  //output: Zorg
    r2.voing();  //output: Zog

  }
}

Note-se que a função main declara o lançamento de excepções. Esta prática foi usada por simplicidade de exposição e não é ideal em geral: a função deveria tratar as excepções.