Por que você não usa usa um limite superior em sua parametrização genérica para E
?
Como em:
private <E extends Serializable> void writeEvent(ObjectOutputStream out,E obj) {
// etc.
}
A confusão aqui seria isso Serializable
é uma interface e não pode ser "estendido" por classes (mas posso ser estendido por outras interfaces como observações de Thomas), mas o limite superior ainda é válido.
Claro que isso implica que o seu E
lavagem precisar implementar Serializable
, ou implementar uma interface que se estende Serializable
.