Innanzitutto perché dovresti serializzare oggetti Database? Per quanto vedo dal codice postato, Database non ha "stato" (si intende genericamente l'insieme degli "attributi" (variabili di istanza) che contengono i dati distinti per ciascun oggetto). Domandati: quale è (o dovrebbe essere) secondo te la differenza tra due (o più) distinti oggetti Database?
Inoltre anche fare in altre classi es.:
Database.componenti.add(this);
non è un buon "design".
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet