Como ler uma lista de objetos de um arquivo e atribuir a uma LinkedList (Java)

sou novo aqui no fórum e estou travado em uma parte do meu código. Eu salvo uma lista de objetos em um arquivo de texto antes do fechamento do meu JFrame, porém ao iniciar meu JFrame novamente, ele deveria ler esse arquivo de texto com os objetos e atribui-los em uma nova LinkedList, porém ele da erro e não realiza essa operação. Abaixo está as informações do código. Obrigado pela atenção!

Aqui eu gravo a LinkedList de objetos no arquivo de texto ao fechar o JFrame:

public void windowClosing(WindowEvent evt) {
                   
                    try {
                        FileOutputStream fosTodo = new FileOutputStream("todo.txt");
                        ObjectOutputStream objTodo = new ObjectOutputStream(fosTodo);
                        for(Task t: todo) {
                            objTodo.writeObject(t);
                            System.out.println(t);
                        }
                        objTodo.flush();
                        objTodo.close();
                    } catch (FileNotFoundException ex) {
                        Logger.getLogger(Agenda.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IOException ex) {
                        Logger.getLogger(Agenda.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    
                    
                    System.exit(0);
                    
                }

E aqui eu Leio esse arquivo e tento passar as informações para outra LinkedList ao iniciar meu JFrame (é a mesma LinkedList, porém ela está vazia por ter inciado meu programa novamente):

try {
                FileInputStream fisTodo = new FileInputStream("todo.txt");
                ObjectInputStream objTodo = new ObjectInputStream(fisTodo);
                while(true) {
                    task = (Task)objTodo.readObject();
                    todo.add(task);
                }
                //JOptionPane.showMessageDialog(null, "Arquivo todo.txt lido com sucesso!");
            } catch (FileNotFoundException ex) { 
                Logger.getLogger(Agenda.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Agenda.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Agenda.class.getName()).log(Level.SEVERE, null, ex);
            }

Minha classe do objeto está assim:

package schedulerentry;

import java.io.Serializable;
import java.util.Calendar;

public class Task extends SchedulerEntry implements Serializable{

String nome;
String shortDescription;
//Calendar dueDate;
String dueDate;
Status status;

public Task(String nome, String description, String date, Status status, Calendar insertionDate, boolean blocked) {
    super(insertionDate, blocked);
    this.nome = nome;
    shortDescription = description;
    dueDate = date;
    this.status = status;
}

public void setNome(String nome) {
    this.nome = nome;
}

public void setShortDescription(String shortDescription) {
    this.shortDescription = shortDescription;
}

public void setDueDate(String dueDate) {
    this.dueDate = dueDate;
}

public void setStatus(Status status) {
    this.status = status;
}

public String getNome() {
    return nome;
}

public String getShortDescription() {
    return shortDescription;
}

/*
public Calendar getDueDate() {
return dueDate;
}
*/
public String getDueDate() {
return dueDate;
}

public Status getStatus() {
    return status;
}

public String toNome() {
    return String.format(getNome());
}

public String toString() {
    return String.format("***** " + nome + " *****n" + "Data de prazo da Tarefa: " + dueDate + "nDescrição: " + shortDescription + "nStatus: " + status + "nBlocked: " + blocked + "n");
}
    

}

Os códigos da leitura e escrita dos arquivos estão no main do meu JFrame.