بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
چرا باید اشاره گرهای محلی ( Local ) رو بعضی وقتها final کنیم؟
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
uncocoder
11 سال پیش
+20
0
وقتی چیزی را فاینال می کنید، معرفی می کنید که غیر قابل تغییر هست. اگر آنرا به عنوان یک Local Variable تعریف کرده باشید، در بلاک یک متد مورد استفاده قرار میگیره و بعد اون اشاره گر ( نه محتوای اشاره گر ) پاک میشه.
پس برای اینکه در نمونه ای از یک کلاس Anonymous که ساخته میشه ( مثل new OnClickListener ) قرار باشه ازش استفاده بشه، باید تضمین شده باشه که مقدار داخل اون عوض نخواهد شد و همیشه این اشاره گر به یک نقطه ثابت اشاره می کنه. به همین علت استفاده یک اشاره گر ( یا متغیر ) Local در یک Object از جنس یک Anonymous Class نیاز به Final شدن داره.
آیا final کردنش این تضمین رو میده که تا آخر برنامه هم وجود داشته باشه یا فقط تا زمان آخرین دسترسی به اون متغییر وجود داشته باشه ؟ ، پس چرا برای final بودن اینظور تعریف نشده که وقتی به این نقطه رسید ، مقدارش غیر قابل تغییر باشه تا اینکه از لحظه تعریف به بعد !، این یکم دست ما رو میبنده که البته قابل حله :) (10 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .