برنامه نویسی
مورد 33: امکان استفاده از ظروف ناهمگن تایپ را در نظر بگیرید

کاربردهای رایج ژنریک ها
- مجموعه هایی مانند Set و Map.
- کانتینرهای تک عنصری مانند ThreadLocal و AtomicReference.
- محدودیت: تعداد پارامترهای نوع را در هر ظرف ثابت کنید.
نیاز به انعطاف پذیری
- مثال: ردیف پایگاه داده با تعداد زیادی ستون.
- راه حل: به جای ظرف، کلید را پارامتر کنید.
مثال پیاده سازی: کلاس علاقه مندی ها
به شما امکان می دهد نمونه های مورد علاقه از انواع مختلف را ذخیره و بازیابی کنید.
از اشیاء کلاس به عنوان کلید استفاده می کند.
کلاس امکان ارتباط اطلاعات را در زمان کامپایل و اجرا می دهد.
Favorites Class API
- Client یک شی Class را برای پیکربندی و بازیابی موارد دلخواه ارائه می دهد.
- مثال استفاده:
پیاده سازی کلاس مورد علاقه
- از Map, Object> برای ذخیره موارد دلخواه استفاده می کند.
- putFavorite شی مورد علاقه را در نقشه وارد می کند.
- getFavorite با استفاده از Class.cast، نوع درست را بازیابی و به صورت پویا ارسال می کند.
محدودیت های کلاس علاقه مندی ها
- ایمنی نوع می تواند توسط کلاینت های مخرب با استفاده از raw Class خراب شود.
- نمیتوان با انواع غیرتبدیلشده (مانند فهرست) استفاده کرد.
- putFavorite می تواند نمونه هایی را برای اطمینان از امنیت بررسی کند:
لفاف های مجموعه Typesafe
- java.util.Collections wrappers را ارائه میکند و میگوید checkedSet، checkedList، checkedMap.
- افزودن reification به مجموعه ها، پرتاب ClassCastException در درج های نادرست.
توکن های نوع محدود
- مثال: متد getAnnotation در رابط AnnotatedElement.
- از Class extensions Annotation> به عنوان یک نشانه نوع محدود استفاده می کند.
- Class.asSubclass ریخته گری ایمن را به صورت پویا انجام می دهد.
خلاصه نهایی
- کانتینرهای عمومی معمولاً دارای تعداد ثابتی از پارامترهای نوع هستند.
- ظروف ناهمگن Typesafe از پارامترهای نوع در کلیدها استفاده می کنند.
- اشیاء کلاس را می توان به عنوان نشانه های نوع استفاده کرد.
- همچنین می توان از نشانه های نوع سفارشی مانند DatabaseRow و Column استفاده کرد.