سؤال

هل هذا ممكن؟ أحتاج إلى أن أكون قادرًا على القراءة من الملف لاحقًا. مثال على ما أعتزم القيام به (ولكن لا يعمل لأن E غير قابل للتسلسل):

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();
        }
    }
هل كانت مفيدة؟

المحلول

لماذا لا تستخدم استخدام الحد الأعلى في المعلمة العامة الخاصة بك E?

كما في:

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

الالتباس هنا سيكون كذلك Serializable هي واجهة ولا يمكن "تمديدها" بواسطة الفصول (ولكنها يستطيع يتم تمديدها من خلال واجهات أخرى كما ملاحظات توماس) ، لكن الحد الأعلى لا يزال صالحًا.

بالطبع هذا يعني أن الخاص بك Eسوف بحاجة إلى لتنفيذ Serializable, أو تنفيذ واجهة تمتد Serializable.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top