Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida Java.io.Serializable

public static void main(String[] args) throws FileNotFoundException, IOException {
        Cliente cliente = new Cliente();
        cliente.setNome("Nico");
        cliente.setProfissao("Dev");
        cliente.setCpf("234113131");
        
        ContaCorrente cc = new ContaCorrente(222, 333);
        cc.setTitular(cliente);
        cc.deposita(222.3);
        
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("cc.bin"));
        oos.writeObject(cc);
        oos.close();
        
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cc.bin"));
        ContaCorrente cc = (ContaCorrente) ois.readObject();
        ois.close();
        System.out.println(cc.getSaldo());
        System.out.println(cc.getTitular());
    }

Nessa Aula de java.io o professor dar exemplo de como serializar e deserializar classes com herança no formato de aquivo em bin, no caso minha duvida é como que faria para escrever uma lista de classes nesse arquivo bin e para ler esse arquivo bin em formato de lista

1 resposta
solução!

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