بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چرا باید اشاره گرهای محلی ( Local ) رو بعضی وقتها final کنیم؟

مدیریت گفتگو
uncocoder 13 سال پیش
آخرین تغییر: 12 سال پیش

نظرات

پاسخ‌ها 1

uncocoder 13 سال پیش

وقتی چیزی را فاینال می کنید، معرفی می کنید که غیر قابل تغییر هست. اگر آنرا به عنوان یک Local Variable تعریف کرده باشید، در بلاک یک متد مورد استفاده قرار میگیره و بعد اون اشاره گر ( نه محتوای اشاره گر ) پاک میشه.

پس برای اینکه در نمونه ای از یک کلاس Anonymous که ساخته میشه ( مثل new OnClickListener ) قرار باشه ازش استفاده بشه، باید تضمین شده باشه که مقدار داخل اون عوض نخواهد شد و همیشه این اشاره گر به یک نقطه ثابت اشاره می کنه. به همین علت استفاده یک اشاره گر ( یا متغیر ) Local در یک Object از جنس یک Anonymous Class نیاز به Final شدن داره.

نظرات

مجتبی یگانه 12 سال پیش
آیا final کردنش این تضمین رو میده که تا آخر برنامه هم وجود داشته باشه یا فقط تا زمان آخرین دسترسی به اون متغییر وجود داشته باشه ؟ ، پس چرا برای final بودن اینظور تعریف نشده که وقتی به این نقطه رسید ، مقدارش غیر قابل تغییر باشه تا اینکه از لحظه تعریف به بعد !، این یکم دست ما رو میبنده که البته قابل حله :)
uncocoder 12 سال پیش
شما با فاینال کردن ادعا می کنید که غیرقابل تغییر هست و طبق این ادعا Eclipse عمل می کنه. اما لزومی به قطعی بودن این ادعا نیست که البته Eclipse به شما اجازه تغییر نمیده. نمی دونم این کمکی کرد یا نه؟

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .