Pergunta

Isso é possível? Eu preciso poder ler do arquivo posteriormente. Exemplo do que pretendo fazer (mas não funciona porque E não é serializável):

private <E> void writeEvent(ObjectOutputStream out,E obj) throws IOException{
        out.writeObject(new custEvent(obj));
        }

class custEvent<E> implements Serializable{
        private E obj;
        private Date date;

        public custEvent(E obj) {
            this.obj=obj;
            date=new Date();
        }
    }
Foi útil?

Solução

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 Elavagem precisar implementar Serializable, ou implementar uma interface que se estende Serializable.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top