Oi Luccas! Tudo bem?
Para serializar e deserializar uma lista de objetos em Java, você pode usar a mesma abordagem que está utilizando para um único objeto, mas aplicando-a a uma List
de objetos. Vou te mostrar como fazer isso com um exemplo prático.
Primeiro, certifique-se de que todas as classes que você deseja serializar implementem a interface Serializable
. No seu exemplo, as classes Cliente
e ContaCorrente
devem implementar Serializable
.
import java.io.Serializable;
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;
private String nome;
private String profissao;
private String cpf;
// getters e setters
}
public class ContaCorrente implements Serializable {
private static final long serialVersionUID = 1L;
private int agencia;
private int numero;
private double saldo;
private Cliente titular;
// getters, setters e métodos
}
Agora, vamos ver como serializar e deserializar uma lista de ContaCorrente
:
Serialização de uma Lista
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
List<ContaCorrente> contas = new ArrayList<>();
Cliente cliente1 = new Cliente();
cliente1.setNome("Nico");
cliente1.setProfissao("Dev");
cliente1.setCpf("234113131");
ContaCorrente cc1 = new ContaCorrente(222, 333);
cc1.setTitular(cliente1);
cc1.deposita(222.3);
Cliente cliente2 = new Cliente();
cliente2.setNome("Ana");
cliente2.setProfissao("Designer");
cliente2.setCpf("123456789");
ContaCorrente cc2 = new ContaCorrente(444, 555);
cc2.setTitular(cliente2);
cc2.deposita(500.0);
contas.add(cc1);
contas.add(cc2);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("contas.bin"));
oos.writeObject(contas);
oos.close();
}
}
Desserialização de uma Lista
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("contas.bin"));
List<ContaCorrente> contas = (List<ContaCorrente>) ois.readObject();
ois.close();
for (ContaCorrente cc : contas) {
System.out.println("Saldo: " + cc.getSaldo());
System.out.println("Titular: " + cc.getTitular().getNome());
}
}
}
Dessa forma, você está escrevendo e lendo uma lista de objetos ContaCorrente
para e de um arquivo binário.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.