برنامه نویسی

مورد 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 استفاده کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا