سؤال

أريد إنشاء فئة تأخذ معلمتين. يجب أن يتم كتابته ببساطة لأن T. يجب أن تكتب الآخر كشيء يمتد على حد سواء و SomeInterface<T>. عندما أحاول هذا

public class SomeClass<T, S extends SomeInterface<T> & T>

ثم تشكو جافا مع

"النوع T ليس واجهة ؛ لا يمكن تحديدها كمعلمة محددة"

وإذا حاولت بدلاً من ذلك إنشاء واجهة لـ S مع

public interface TandSomeInterface<T> extends SomeInterface<T>, T

ثم تشكو جافا مع

"لا يمكن الرجوع إلى المعلمة Type t as supertype"

هل هناك أي طريقة للقيام بذلك في جافا؟ أعتقد أنه يمكنك القيام بذلك في C ++ ...؟

هل كانت مفيدة؟

المحلول

لا يمكنك إنشاء واجهة تمتد معلمة النوع T لأنه لا يوجد عقد يضمن T لتكون واجهة. وبالطبع واجهة تمديد الفصل غير مسموح به.

نصائح أخرى

هذا يعمل إذا قمت بتمديد واجهة أيضًا:

public class SomeClass<T extends I, S extends SomeInterface<T> & I>

ولكن ربما ليس بالضبط ما تريد ...

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