تمديد كل من T و SomeInterface في Java
-
23-09-2019 - |
سؤال
أريد إنشاء فئة تأخذ معلمتين. يجب أن يتم كتابته ببساطة لأن 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>
ولكن ربما ليس بالضبط ما تريد ...
لا تنتمي إلى StackOverflow