Salve a tutti, nel mio programma ho bisogno di creare uno stream di byte a partire da un'istanza di una classe (la classe Data), e poi ricostruire l'oggetto a partire dallo stream. Ho questi due metodi:

codice:
public ByteArrayOutputStream dataToStream(Data data) throws IOException{      ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(buffer);
        oos.writeObject(data);
        oos.close();
        return buffer;
    }

public Data streamToData(ByteArrayOutputStream baos) throws IOException, ClassNotFoundException{       byte[] rawData = baos.toByteArray();
        
       ByteArrayInputStream bais = new ByteArrayInputStream(rawData);
        ObjectInputStream ois= new ObjectInputStream(bais);
       Data data = (Data) ois.readObject();
        
        ois.close();
        return data;
       
    }
la classe Data implementa l'interfaccia Serializable, e ha tra gli attributi, oltre a variabili di tipo stringa o double, anche un oggetto (di classe Object, a seconda degli usi del programma può avere tipo diverso).
Quando provo ad eseguire il programma ricevo come errore:
Data cannot be cast to ByteArrayOutputStream oppure viceversa ByteArrayOutputStream cannot be cast to Data

Dove sbaglio? Grazie in anticipo!