خرید بک لینک
سلام
هدف از اینکه یک متغییر رو فاینال می کنیم چیه ؟
مثلا توی این کد
final int p =11;
btn_0.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       edt_result.setText("p"+p);
    }
});
چرا ما نباید بعدا بتونیم p رو تغییر بدیم؟

تشکر شده توسط:

بخاطر اینکه نتونیم تغییرش بدیم یا مساوی یه شئ جدید بگذاریمش. فاینال شدنش به این معنا نیست که خصوصیاتش رو مثل text و... نمیشه تغییر داد بلکه خودش رو نمیشه مساوی یه شئ جدید قرار داد (عملگر انتساب دیگه روش کار نمیکنه). علت این موضوع اینه که جاوا میخواد مطمئن بشه که Threadهای دیگه و دستوراتی که داخل Ruableها مینویسید، اشیاء رو دستکاری نمیکنن چون قراره احتمالاً بعدش دوباره توی متد یه کارهایی روی اون عناصر صفحه انجام بشه.

ممکنه با خودتون بگین خوب من که نمیخوام تغییرش بدم ولی جاوا نمیتونه روی احتمالات تصمیمگیری کنه. یه زبان سختگیره که نمیگذاره حتی درصورت تمایلتون، برنامه با الگوی بد بنویسید. بنابراین سختگیری میکنه و میگه هروقت یه مقداری رو برای یه Ruable دیگه فرستادین، اون رو final کنین که نتونه دستکاریش کنه.

دقت کنید فاینال شدن فقط عملگر انتساب رو غیرفعال میکنه و ربطی به Propertyهای اشیاء نداره.

تشکر شده توسط:

برچسب: نویسنده: خنجی تاريخ: جمعه 4 تير 1395 ساعت: 14:10

صفحه بندی