+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.5هزار بازدید
+2 امتیاز
1 پاسخ 334 بازدید
سوال شده 3 سال قبل در برنامه نویسی توسط sina-deuxshiri (12 امتیاز)
0 امتیاز
2 پاسخ 1.6هزار بازدید
+2 امتیاز
1 پاسخ 450 بازدید
+1 امتیاز
2 پاسخ 813 بازدید
+1 امتیاز
2 پاسخ 2.0هزار بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط sara_sheikhi (20 امتیاز)
+1 امتیاز
1 پاسخ 310 بازدید
0 امتیاز
1 پاسخ 242 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...