Question

Est-ce même possible? J'ai besoin de pouvoir lire dans le fichier plus tard. Exemple de ce que j'ai l'intention de faire (mais ne fonctionne pas parce que E n'est pas sérialisable):

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();
        }
    }
Était-ce utile?

La solution

Pourquoi n'utilisez-vous pas d'utiliser une limite supérieure dans votre paramétrisation générique pour E?

Un péché:

private <E extends Serializable> void writeEvent(ObjectOutputStream out,E obj) {
  // etc.
}

La confusion ici serait que Serializable est une interface et ne peut pas être "étendu" par les classes (mais elle boîte être étendu par d'autres interfaces comme le remarque Thomas), mais la limite supérieure est toujours valable.

Bien sûr, cela implique que votre Es volonté besoin implémenter Serializable, ou implémenter une interface qui s'étend Serializable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top