+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

دو متغییر زیر را در نظر بگیرید:

Collection<?> c ;
Collection<Object> c ;

مزیت استفاده از Wildcard بجای نوع Object در تعریف این دو متغیر چیست؟

قبل توسط (308 امتیاز)
چرا این کد خطا می دهد مگر شرط ان استفاده از آبجکت های Strring نیست
List<? extends String> list;
String name="bahram";
list.add(name);
قبل توسط (1.1هزار امتیاز)
لطفا این مورد را در قالب یک سوال جدید مطرح کنید.

1 پاسخ

+1 امتیاز
قبل توسط (479 امتیاز)
ویرایش شده قبل توسط
  • مزیت اول استفاده از wildcard این است که شما می تونید برای مجموعه کلکشین خودتون شرط بزارید یعنی اینکه بگید مجموعه شما می تونه کدوم نوع متغییر رو قبول کنه مانند مثال زیر.

 

Collection<? extends Cars> CarsCollection;

 

معنی دستور بالا اینه که این مجموعه از هر نوعی کلاسی که از کلاس Cars ارث برده می تونه باشه یعنی هر کلاس وارثی از کلاس Cars رو می تونید در این مجموعه بریزید  که در آبجکت جنریک چنین قابلیتی ندارید.

  • مزیت دوم وقتی شما یک Collection<Object> استفاده می کنید یعنی یک مجموعه از آبجکتها و وقتی Wildcard استفاده می کنید به معنای واقعی می تونید از هر نوع آبجکتی برای پر کردن استفاده کنید. به مثال زیر توجه کنید، خط اول بدون مشکل اجرا می شود ولی خط دو با خطای کانورت مواجه میشه.
Collection<?> c=new ArrayList<String>();// Whitout Error
Collection<Object> c=new ArrayList<String>();//Error: incompatible types: ArrayList<String> cannot be converted to Collection<Object>

 

برای اطلاعات بیشتر:

http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html

سوالات مشابه

+1 امتیاز
1 پاسخ 1.8هزار بازدید
+2 امتیاز
1 پاسخ 442 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط sina-deuxshiri (12 امتیاز)
0 امتیاز
2 پاسخ 1.9هزار بازدید
+2 امتیاز
1 پاسخ 600 بازدید
+1 امتیاز
2 پاسخ 1.1هزار بازدید
+1 امتیاز
2 پاسخ 2.2هزار بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط sara_sheikhi (20 امتیاز)
+1 امتیاز
1 پاسخ 434 بازدید
0 امتیاز
1 پاسخ 338 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...