0 امتیاز
قبل در برنامه نویسی توسط (426 امتیاز)
ویرایش شده قبل توسط
class MyClass<E> {

   MyClass(List<? extends E> list) {    } //Constructor 1

  <P> MyClass(List<P extends E> list) {    }//Constructor 2

}

چرا Constructor 1 مشکل نداره ولی به Constructor 2 گیر میده

مگه فرق بین استفاده از wildcard و یا اینکه یک کارکتر مثل p رو استفاده کنیم تویه چیه؟

مگه هر دو تاشون این معنی رو نمیدن که تمام فرزند های Type ی که برای E مشخص کردی رو قبول میکنم

1 پاسخ

0 امتیاز
قبل توسط (255 امتیاز)

مفهومی درسته، منتها سینتکس درست نیست. شما P رو تعریف کردی به عنوان یه تایپ ولی باند نشده به چیزی یعنی Extends Object. و توی تعریف لیست باید از این پارامتر استفاده کنین نه اینکه باندش کنین. باند کردنو باید تو همون مرحله تعریف اضافه کنین. یعنی:

<P extends E> MyClass(List<P> list) { }

سوالات مشابه

+2 امتیاز
1 پاسخ 578 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
+2 امتیاز
1 پاسخ 600 بازدید
+4 امتیاز
1 پاسخ 939 بازدید
+1 امتیاز
1 پاسخ 516 بازدید
0 امتیاز
1 پاسخ 369 بازدید
0 امتیاز
1 پاسخ 509 بازدید
+2 امتیاز
2 پاسخ 394 بازدید
0 امتیاز
2 پاسخ 3.2هزار بازدید
0 امتیاز
1 پاسخ 82 بازدید
سوال شده 5 ماه قبل در برنامه نویسی توسط Soraya2 (0 امتیاز)
0 امتیاز
1 پاسخ 133 بازدید
...